MySQL正则表达式
正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。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一样。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!