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語句也提供了萬用字元百分號 和下劃線 來匹配多個和單個字元 在檢索名中包含某些文字或字元的字段時確實很有用,但是這種...