模糊查询(LIKE/NOT LIKE)

isixe 2023-02-11 17:10:13
Categories: Tags:
  • LIKE 关键字主要用于搜索匹配字段中的指定内容
  • 使用 LIKE ,可以使用模式中的两个通配符如下:

通配符

描述

适用

%

匹配任意数量的字符, 甚至零个字符。

匹配模式

描述

A%

匹配开头

%A

匹配结尾

%A%

匹配中间

_

只匹配一个字符

匹配模式

描述

A_

匹配两个字符,且开头为A

_A

匹配两个字符,且结尾为A

_A_

匹配三个字符,且中间为A

[ ]

匹配任意一个字符在正则中的字符

[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>