从中可以看到正则表达式能够模擬LIKE使用通配符注意:在通配符能完成的时候就不用正则,因为正则可能慢点当然正则也能简化通配符,完成更大的作用所以要有所取舍。
下面两条语句第一条不返回数据第二条返回数据。
LIKE
匹配整个列值时不会找到它,相应的行也不会被返回(除非使用通配符)
REGEXP
匹配时会自动查找并返回结果。
那么REGEXP
也能匹配整个列值使用^
和$
定位符即可!
Mysql正则大小写都会匹配,为区分大小写可使用binary
关键字如:
|
为囸则表达式的OR
操作符,表示匹配其中之一
使用[]
括起来的字符将会匹配其中任意单个字符。
以上'[12]st'正则表达式[12]定义一组字符,它的意思是匹配1或2因此结果如下:
正如所见,
[]
是另一种OR
语句[123]st可以是[1|2|3]st的缩写,也可以使用后者注意:1|2|3 st
这样不推荐,因为mysql会假定你的意思是匹配'1'或'2'戓'3st'除非你把字符|
括在一个集合中,如:[1|2|3]st
字符也可以否定加^
则意味着除此之外,如[^123]st
意思是匹配除了1st、2st、3st之外的数据
正则表达式可以使用
-
匹配┅个范围,如[0-9]
匹配任意数字无论是1还是11还是10111,[a-z]
匹配任意小写字母
如上,.
/-
/[]
等是正则表达式的特殊字符如果要匹配含有这些字符的数据,就需要使用转义(escaping)\\
。如\\.
表示查找'.'\\
也用来引用元字符(具有特殊含义的字符),如:
如果匹配反斜杠本身()则需要使用
\\\
为什么Mysql使用两个反斜杠(\)而很多语言使用一个反斜杠转义呢,因为mysql自己解释一个正则表达式库解释一个。