Mysql数据库正则表达式
1.基本字符的匹配
SELECT * FROM a1 WHERE name regexp '1000' #匹配名稱含有1000的所有行 SELECT * FROM a1 WHERE name regexp '.000' #匹配以000結尾的所有行,(.正則中表示:匹配任意一個字符)從中可以看到正則表達式能夠模擬LIKE使用通配符,注意:在通配符能完成的時候就不用正則,因為正則可能慢點,當然正則也能簡化通配符,完成更大的作用。所以要有所取舍。
LIKE與REGEXP的區別:
SELECT * FROM a1 WHERE name LIKE 'a'SELECT * FROM a1 WHERE name regexp 'a' 下面兩條語句第一條不返回數據,第二條返回數據。
原因如下:
LIKE匹配整個列值時,不會找到它,相應的行也不會被返回(除非使用通配符)
REGEXP匹配時,會自動查找并返回結果。
那么REGEXP也能匹配整個列值,使用^和$定位符即可!
匹配不區分大小寫
Mysql正則大小寫都會匹配,為區分大小寫可使用binary關鍵字,如:
SELECT * FROM a1 WHERE name LIKE binary '%J%' #使用LIKE+通配符匹配大寫J SELECT * FROM a1 WHERE name regexp binary 'j' #使用正則匹配小寫j2.進行OR匹配
|為正則表達式的OR操作符,表示匹配其中之一
SELECT * FROM a1 WHERE name regexp binary 'a|j|G'3.匹配特定字符
使用[]括起來的字符,將會匹配其中任意單個字符。
SELECT * FROM a1 WHERE name regexp '[12]st'以上'[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之外的數據。
4.匹配范圍
正則表達式可以使用-匹配一個范圍,如[0-9]匹配任意數字,無論是1還是11還是10111,[a-z]匹配任意小寫字母。
5.匹配特殊字符
如上,./-/[]等是正則表達式的特殊字符,如果要匹配含有這些字符的數據,就需要使用轉義(escaping),\\。如\\.表示查找'.'。\\也用來引用元字符(具有特殊含義的字符),如:
\\f:表示換頁
\\n:表示換行
\\r:表示回車
\\t:表示制表
\\v:表示縱向制表
Notes:
如果匹配反斜杠本身()則需要使用\\\
為什么Mysql使用兩個反斜杠(\),而很多語言使用一個反斜杠轉義呢,因為mysql自己解釋一個,正則表達式庫解釋一個。
6.匹配字符串
總結
以上是生活随笔為你收集整理的Mysql数据库正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql coreseek_关于mys
- 下一篇: Mysql更新插入