正则关键字(REGEXP/RLIKE/NOT REGEXP/NOT RLIKE)

Exisi 2023-02-14 13:00:13
Categories: Tags:

正则关键字

说明

REGEXP

字符串是否与正则表达式匹配

RLIKE

字符串是否与正则表达式匹配

NOT REGEXP

正则表达式的否定

NOT LIKE

正则表达式的否定

 

  • MySQL中使用 REGEXP / RLIKE 关键字指定正则表达式的字符匹配模式。下表列出了REGEXP操作符中常用字符匹配列表

 

  • MySQL中的 REGEXP RLIKE 关键字属于同义词,功能相同

语法

exp REGEXP pat

 

exp RLIKE pat

 

参数

说明

exp

匹配的字符

pat

字符匹配模式,以下模式

参数类型

作用

适用

str

匹配包含指定的字符串的文本

aa    ->   aa

[ ]

匹配包含指定的字符串的文本

[ab]  ->  a, b, ab, bc, ac

[^ ]

匹配不在括号中的任何字符

[ab]  ->  c, cde

^

匹配字符串的开始位置

^a  ->  abc

$

匹配字符串的结束位置

C$  ->  ABC

.

匹配任何一个字符,包括回车、换行等。

b.t  ->  bit, bat, but

*

匹配前面的一个字符出现 0 个或 n 次,在它之前必须有内容

f*n  ->  fan, fn, an

+

匹配前面的一个字符出现 1 个或 n 次,在它之前也必须有内容

ba+  ->  ba, bare, bay

?

匹配前面的一个字符出现 0 个或 1

sa?  ->  sa, s

{n}

匹配前面的一个字符出现 n

b{2}   ->  bb

{n,}

配前面的一个字符出现 n 次或着更多次

b{2,}  ->  bb, bbbbbbb

{n,m}

配前面的一个字符出现最 n m

b{3,7}  ->  bbbbbbbbbb

 

示例

#查找name字段中包含 'ma' 字符串的所有数据

SELECT name

FROM person_tbl

WHERE name REGEXP 'ma';

 

SELECT name

FROM person_tbl

WHERE name LIKE 'ma';

示例

#查找name字段中以 s 开头的的所有数据

SELECT name

FROM person_tbl

WHERE name REGEXP '^st';

 

SELECT name

FROM person_tbl

WHERE name LIKE '^st';

示例

#查找name字段中以 'ok' 为结尾的所有数据

SELECT name

FROM person_tbl

WHERE name REGEXP 'ok$';

 

SELECT name

FROM person_tbl

WHERE name LIKE 'ok$';

 

 

 

反向正则匹配(NOT REGEXP / NOT RLIKE

  • NOT RLIKE / NOT REGEXP 关键字与 REGEXP /  RLIKE 相反,用于搜索字段中与正则相反匹配的内容

语法

exp NOT REGEXP pat

 

exp NOT RLIKE pat

示例

#查找name字段中不包含 'ma' 字符串的所有数据

SELECT name

FROM person_tbl

WHERE name NOT REGEXP 'ma';

 

SELECT name

FROM person_tbl

WHERE name NOT LIKE 'ma';