MySQL的正規表示式

2021-09-06 07:12:57 字數 1747 閱讀 1554

1.mysql的正規表示式僅僅使sql語言的乙個子集,可以匹配基本的字元、字串。 

例如:select * from wp_posts where post_name regexp 'hello',可以檢索出列post_name中所有包含hello的行

regexp '.og' .是正規表示式中里乙個特殊的字元。它表示匹配乙個字元,因此,dog,hog,mog等等都能匹配。

注意:

關於like和regexp的區別:like匹配整個列。如果被匹配的文字僅在列值中出現,like並不會找到它,相應的行也不會返回(當然,使用萬用字元除外)。而regexp在列值內進行匹配,如果被匹配的匹配的文字在列值中出現,regexp將會找到它,相應的行將被返回,這時乙個非常重要的差別(當然,如果適應定位符號^和$,可以實現regexp匹配整個列而不是列的子集)。

關於大小寫的區分:mysql中正規表示式匹配(從版本3.23.4後)不區分大小寫 。如果要區分大小寫,應該使用binary關鍵字,如where post_name regexp binary 'hello .000'

2.關於or匹配

為了搜尋兩個串之一,使用|, 如,select * from products where pro_id regexp '1000|2000'order by pro_id;

這樣就1000和2000都能匹配並返回,當然,使用多個|就可以匹配多個串

3.只是匹配幾個字元[]

例如,這樣將要匹配[0123456789]可以匹配0到9,[1-4][4-9]也是合法的範圍。此外,範圍不一定只是數值的,[a-z]匹配任意字母字元

如:select prod_name from products where prod_name regexp '[1-5] ton'order by prod_name;

4.匹配特殊字元使用\進行轉義

\\.能夠匹配.\\f換頁

\\n換行

\\r回車

\\t製表

\\縱向製表

注意:為了匹配\本身,需要使用\\\

5.匹配字元類

[:alnum:] 任意字母和數字(通[a-za-z0-9])

[:alpha:] 任意字元(同[a-za-z])

[:blank:] 空格和製表符(同[\\t])

[:digit:] 任意數字(同[0-9])

[:lower:] 任意小寫字母

[:upper:] 任意大寫字母

[:space:] 包括空格在內的任意空白字元

6.匹配多個例項,關於重複元字元

*0個或者多個匹配

+ 1個或者多個匹配(等於)

? 1個或者多個匹配(等於)

指定數目的匹配

不少於指定數目的匹配

匹配數目的範圍(m不超過255)

例子: select prod_name from products where prod_name regexp '[[:digit:]]' ,如前所述,[:digit:]匹配任意數字,因而它為數字的乙個幾何。[[:digit:]]匹配連在一起的任意4位數字,當然,上面的例子也可以這樣寫regexp '[0-9][0-9][0-9][0-9]'

7.定位符

^文字的開始

&文字的結尾

[[:<:]] 詞的開始

[[:>:]] 詞的結尾

通過使用這些定位符,能夠使regexp起類似like的作用

mysql正規表示式 MySQL正規表示式

正規表示式是為複雜搜尋指定模式的強大方式。正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello匹配hello。非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串匹配。例如,正規表示式hello word匹配字串hello或字串w...

mysql 正規表示式

已知mysql可以通過 like 來進行模糊匹配。mysql 同樣也支援其他正規表示式的匹配,mysql中使用 regexp 操作符來進行正規表示式匹配。例項 查詢name欄位中以 st 為開頭的所有資料 mysql select name from person tbl where name re...

MySQL正規表示式

在前面我們已經看到了mysql的模式匹配 like mysql支援另一種型別的模式匹配的操作基於正規表示式和正規表示式運算子。如果知道php或perl,那麼它是非常簡單的,因為這匹配非常相似於指令碼正規表示式。以下是模式的 其可以連同regexp運算子使用。模式什麼樣的模式匹配 開始的乙個字串 結束...