Mysql数据库正则表达式
1.基本字符的匹配
SELECT * FROM a1 WHERE name regexp '1000' #匹配名稱(chēng)含有1000的所有行 SELECT * FROM a1 WHERE name regexp '.000' #匹配以000結(jié)尾的所有行,(.正則中表示:匹配任意一個(gè)字符)從中可以看到正則表達(dá)式能夠模擬LIKE使用通配符,注意:在通配符能完成的時(shí)候就不用正則,因?yàn)檎齽t可能慢點(diǎn),當(dāng)然正則也能簡(jiǎn)化通配符,完成更大的作用。所以要有所取舍。
LIKE與REGEXP的區(qū)別:
SELECT * FROM a1 WHERE name LIKE 'a'SELECT * FROM a1 WHERE name regexp 'a' 下面兩條語(yǔ)句第一條不返回?cái)?shù)據(jù),第二條返回?cái)?shù)據(jù)。
原因如下:
LIKE匹配整個(gè)列值時(shí),不會(huì)找到它,相應(yīng)的行也不會(huì)被返回(除非使用通配符)
REGEXP匹配時(shí),會(huì)自動(dòng)查找并返回結(jié)果。
那么REGEXP也能匹配整個(gè)列值,使用^和$定位符即可!
匹配不區(qū)分大小寫(xiě)
Mysql正則大小寫(xiě)都會(huì)匹配,為區(qū)分大小寫(xiě)可使用binary關(guān)鍵字,如:
SELECT * FROM a1 WHERE name LIKE binary '%J%' #使用LIKE+通配符匹配大寫(xiě)J SELECT * FROM a1 WHERE name regexp binary 'j' #使用正則匹配小寫(xiě)j2.進(jìn)行OR匹配
|為正則表達(dá)式的OR操作符,表示匹配其中之一
SELECT * FROM a1 WHERE name regexp binary 'a|j|G'3.匹配特定字符
使用[]括起來(lái)的字符,將會(huì)匹配其中任意單個(gè)字符。
SELECT * FROM a1 WHERE name regexp '[12]st'以上'[12]st'正則表達(dá)式,[12]定義一組字符,它的意思是匹配1或2,因此結(jié)果如下:
正如所見(jiàn),[]是另一種OR語(yǔ)句,[123]st可以是[1|2|3]st的縮寫(xiě),也可以使用后者,注意:1|2|3 st這樣不推薦,因?yàn)閙ysql會(huì)假定你的意思是匹配'1'或'2'或'3st'除非你把字符|括在一個(gè)集合中,如:[1|2|3]st
字符也可以否定,加^(guān)則意味著除此之外,如[^123]st意思是匹配除了1st、2st、3st之外的數(shù)據(jù)。
4.匹配范圍
正則表達(dá)式可以使用-匹配一個(gè)范圍,如[0-9]匹配任意數(shù)字,無(wú)論是1還是11還是10111,[a-z]匹配任意小寫(xiě)字母。
5.匹配特殊字符
如上,./-/[]等是正則表達(dá)式的特殊字符,如果要匹配含有這些字符的數(shù)據(jù),就需要使用轉(zhuǎn)義(escaping),\\。如\\.表示查找'.'。\\也用來(lái)引用元字符(具有特殊含義的字符),如:
\\f:表示換頁(yè)
\\n:表示換行
\\r:表示回車(chē)
\\t:表示制表
\\v:表示縱向制表
Notes:
如果匹配反斜杠本身()則需要使用\\\
為什么Mysql使用兩個(gè)反斜杠(\),而很多語(yǔ)言使用一個(gè)反斜杠轉(zhuǎn)義呢,因?yàn)閙ysql自己解釋一個(gè),正則表達(dá)式庫(kù)解釋一個(gè)。
6.匹配字符串
總結(jié)
以上是生活随笔為你收集整理的Mysql数据库正则表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql coreseek_关于mys
- 下一篇: win10安装iis(亲测,工作需要)