mysql 使用正規表示式搜尋

2021-08-02 11:46:36 字數 2863 閱讀 4908

mysql僅僅支援正規表示式的乙個很小的子集

檢索prob_name包含文字四位數字且數字末尾是』000』的所有行

select prob_name

from products

where prob_name regexp '.000'

order

by prob_name;

這個例子可以用like來完成,方法如下所示:

select prod_name

from products

where prod_name like

'%000%'

order

by prod_name;

like和regexp的區別

select prob_name

from products

where prob_name like

'1000'

order

by prob_name;

select prob_name

from products

where prob_name regexp '1000'

order

by prob_name;

執行兩條語句,第一條不返回資料,第二條返回一條

like要匹配的是整個行,第乙個語句只能匹配到列中內容只有』1000』的資料行,而regexp只要列中有內容就可以匹配到

區分大小寫

mysql中正規表示式匹配不區分大小寫,為區分大小寫,可以使用binary關鍵字,如where prob_name regexp binary 『jetpack .000』

select prob_name

from products

where prob_name regexp '1000|2000'

order

by prod_name;

使用』』來匹配特定字元,選取方括號內的任意乙個字元參與匹配。

select prob_name

from products

where prob_name regexp '[123] ton'

order

by prob_name;

匹配1或2或3 ton,ton沒有指定大小寫,大小寫都可以匹配到

除此之外還可以匹配出指定字元之外的任何東西。使用[^123]匹配除這些字元外的任何東西。

[0-9] 匹配任意乙個數字

[a-z] 匹配任意乙個字母

匹配特殊字元,必須用\\作為字首。為了匹配\需要使用\\\``

\`也可以用來引用元字元

元字元說明

\\f換頁

\\n換行

\\r回車

\\t製表

\\v縱向製表 類

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

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

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

[:cntrl:]ascii控制字元(ascii 0到31和127)

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

[:graph:][:print:]相同,但不包括空格

[:lower:]任意小寫字母

[:print:]任意可以列印的字元

[:punct:]既不在[:alnum:]又不在[:contrl:]中的任意字元

[:space:]包括空格在內的任意空白字元(同[\\f\\n\\r\\t\\v])

[:upper:]任意大寫字母

[:xdigit:]任意十六進製制數字

使用重複元字元可以對匹配的數目進行更強的控制

元字元說明

*0個或多個

+1個或多個

?0個或1個

指定數目

不少於指定數目

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

匹配特定位置的文字需要使用定位符

元字元說明

^文字的開始

$文字的結尾

[[:<:]]詞的開始

[[:>:]]詞的結尾

^的雙重用途

- 在集合中(用定義),用^來否定該集合

- 匹配字串的開始處

使用regexp起類似like的作用

like和regexp的不同在於,like匹配整個字串,而regexp匹配子串,利用定位符,通過用^開始每個表示式,用$結束每個表示式,可以使得regexp的作用與like一樣。

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

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

MySQL正規表示式搜尋 md

3 進行or匹配 4 匹配幾個字元之一 5 匹配範圍 6 匹配特殊字元 7 匹配字元類 8 匹配多個例項 9 定位符 正規表示式的作用就是匹配文字,將乙個模式與文字串進行比較。和熟知的正規表示式相比,sql語言僅僅支援少量,是乙個子集。以簡單例子開始,mysql select prod name f...

正規表示式 MySQL搜尋過濾

在資料庫的資料過濾過程中只用where子句和like操作符都是對於已知值進行的 不管是匹配乙個還是多個值,測試大於還是小於已知值,或者檢查某個範圍的值,都是使用已知的值 當然mysql語句也提供了萬用字元百分號 和下劃線 來匹配多個和單個字元 在檢索名中包含某些文字或字元的字段時確實很有用,但是這種...