MySQL正则表达式

2023-12-15 22:49:11

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据。

1.基本字符匹配

WHERE name REGEXP '1000'

会匹配到值中包含1000的名字

和通配符LIKE的区别:LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。 而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。这是一个非常重要的差别。

2.OR匹配

WHERE name REGEXP '1000|2000'

中间加|
3.匹配多个字符之一

WHERE name REGEXP '[123]000'

[123]定义一组字符,它的意思是匹配1或2或3,会匹配到1000,2000,3000
为否定一个字符集,在集合的开始处放置一个^即可

4.匹配范围

WHERE name REGEXP '[123456789]000'

[123456789]等价于[1-9]
范围不限于完整的集合,[1-3]和[6-9]也是合法的范围。此外,范围不一定只是数值的,[a-z]匹配任意字母字符。

5.匹配特殊字符
为了匹配特殊字符,必须用\为前导。\-表示查找-, \.表示查找.。

WHERE name REGEXP '\\.000'

这样就找到含有.000的name

\也用来引用元字符(具有特殊含义的字符)

6.匹配字符类
可以使用预定义的字符集,称为字符类。
[:alnum:] 任意字母和数字,等价于[a-zA-Z0-9]
[:alpha:] 任意字符
[:digit:] 任意数字
[:space:]包括空格在内的任意空白字符

7.匹配多个实例

. 匹配任意一个字符 * 0个或多个字符 + 1个或多个字符 ? 0个或 多个字符
{n} 指定数目 {n,} 不少于指定数目 {n,m} 匹配数目的范围(m不超过255)

8.定位符
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

^有两种用法。在集合中(用[和]定义),用它来否定该集合,否则,用来指串的开始处。
利用定位符,通过用^开始每个表达式,用$结束每个表达式,可以使REGEXP的作用与LIKE一样。

文章来源:https://blog.csdn.net/qq_43814415/article/details/134931458
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。