日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql数据库正则表达式

發布時間:2023/12/10 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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' #使用正則匹配小寫j

2.進行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数据库正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。