- LIKE 关键字主要用于搜索匹配字段中的指定内容
- 使用 LIKE ,可以使用模式中的两个通配符如下:
通配符 |
描述 |
适用 |
||||||||
% |
匹配任意数量的字符, 甚至零个字符。 |
|
||||||||
_ |
只匹配一个字符 |
|
||||||||
[ ] |
匹配任意一个字符在正则中的字符 |
[ABC] ——> A, B, C, AB, AC, BC |
||||||||
[^] |
匹配任意一个字符不在正则中的字符 |
[ABC] ——> D, DE |
- 要测试通配符的文字实例,请在其前面加上转义符。如果未指定ESCAPE字符,则假定为\,除非启用NO_BACKSLASH_ESCAPES SQL模式。在这种情况下,不使用转义字符。
语法
expr LIKE pat [ESCAPE 'escape_char']
参数 |
描述 |
pat |
匹配字段 |
escape_char |
排除转义字符,类似%_[]等字符 |
示例
SELECT * FROM user WHERE name LIKE '张%';
SELECT * FROM user WHERE name LIKE '%张';
SELECT * FROM user WHERE name LIKE '%张%';
示例
SELECT * FROM user WHERE name LIKE '张_';
SELECT * FROM user WHERE name LIKE '_张';
SELECT * FROM user WHERE name LIKE '_张_';
示例
SELECT * FROM user WHERE name LIKE '[张李王]';
SELECT * FROM user WHERE name LIKE '[张李王]四';
SELECT * FROM user WHERE name LIKE '[^张李王]';
SELECT * FROM user WHERE name LIKE '[^张李王]四';
注
- 如果不使用通配符,其等价于 = 运算符
- 模糊搜索无法搜索 NULL 值
反向模糊查询(NOT LIKE)
- NOT LIKE 关键字与 LIKE 相反,主要用于搜索字段中不匹配的指定内容
语法
expr NOT LIKE pat [ESCAPE 'escape_char']
参数 |
描述 |
pat |
匹配字段 |
escape_char |
排除转义字符 |
示例
SELECT * FROM user WHERE name NOT LIKE '张%';
SELECT * FROM user WHERE name NOT LIKE '%张';
SELECT * FROM user WHERE name NOT LIKE '%张%';
示例
SELECT * FROM user WHERE name NOT LIKE '张_';
SELECT * FROM user WHERE name NOT LIKE '_张';
SELECT * FROM user WHERE name NOT LIKE '_张_';
示例
SELECT * FROM user WHERE name NOT LIKE '[张李王]';
SELECT * FROM user WHERE name NOT LIKE '[张李王]四';
SELECT * FROM user WHERE name NOT LIKE '[^张李王]';
SELECT * FROM user WHERE name NOT LIKE '[^张李王]四';
来自 <https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html>