900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > SQL模糊查询(Like Regexp)

SQL模糊查询(Like Regexp)

时间:2023-02-22 09:40:06

相关推荐

SQL模糊查询(Like  Regexp)

先创建一张表

drop table if exists samplelike;CREATE TABLE samplelike( strcol VARCHAR(6) NOT NULL PRIMARY KEY);-- DML :插入数据START TRANSACTION; -- 开始事务INSERT INTO samplelike (strcol) VALUES ('abcddd');INSERT INTO samplelike (strcol) VALUES ('dddabc');INSERT INTO samplelike (strcol) VALUES ('abdddc');INSERT INTO samplelike (strcol) VALUES ('是abcdd');INSERT INTO samplelike (strcol) VALUES ('dda是bc');INSERT INTO samplelike (strcol) VALUES ('abddc是');COMMIT;

当代表否定时,则LIKE和REGEXP都用NOT来表示,NOT LIKE / REGEXP

1. LIKE

1.1 匹配多个字符:“%”

找出以 “a”开头的

select * from samplelike where strcol like "a%";

找出以 "d"结尾的

select * from samplelike where strcol like "%d";

找出包含 “是” 的

select * from samplelike where strcol like "%是%";

1.2 匹配单个字符:“_”

一个 “_” 代表匹配一个字符

select * from samplelike where strcol like "abc___";

2. REGEXP

REGEXP是基于正则表达式匹配的。

“.”匹配任何单个的字符。一个字符类“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。“ * ”匹配零个或多个在它前面的东西。例如,“x”匹配任何数量的“x”字符,“[0-9]”匹配的任何数量的数字,而“.”匹配任何数量的任何东西。MySQL是不区分大小写的。如果要区分大小写,应该使用BINARY关键字,如where xxx REGEXP BINARY ‘Hello.000’多个筛选条件时可以用 “|” 隔开

Example

找出包含 “a是”或者“dc”

select * from samplelike where strcol regexp "a是|dc";

选择以 "a"开头的

select * from samplelike where strcol regexp "^[aA]"

找出以 “d” 结尾的

select * from samplelike where regexp "d$";

参考来源:

DataWhale-SQL: Task03: 3.4.2 LIKE谓词 – 用于字符串的部分一致查询

老生常谈:MYSQL模式匹配 REGEXP和like的用法

更多正则匹配用法:

MySQL学习笔记:like和regexp的区别

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。