先创建一张表
drop table if exists samplelike;
CREATE TABLE samplelike
( strcol VARCHAR(6) NOT NULL PRIMARY KEY);
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 匹配多个字符:“%”
select * from samplelike where strcol like "a%";
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
select * from samplelike where strcol regexp "a是|dc";
select * from samplelike where strcol regexp "^[aA]"
select * from samplelike where regexp "d$";
参考来源: DataWhale-SQL: Task03: 3.4.2 LIKE谓词 – 用于字符串的部分一致查询
老生常谈:MYSQL模式匹配 REGEXP和like的用法
更多正则匹配用法: MySQL学习笔记:like和regexp的区别
|