以下的匹配都試圖匹配單詞出現。如果存在一個匹配則被檢索出來。
-
檢索列prod_name包含文字1000的所有行
select prod_name from products where prod_name REGEXP '1000' order by prod_name
; -
.在正則中表示一個字元
select prod_name from products where prod_name REGEXP '.000' order by prod_name
;
結果: Jet 1000
Jet 2000 -
OR匹配
select prod_name from products where prod_name REGEXP '1000|2000' order by prod_name
; -
如果想匹配特定字元怎麼辦
select prod_name from products where prod_name REGEXP '[123] Ton' order by prod_name
; -
否定字符集
select prod_name from products where prod_name REGEXP '[^123] Ton' order by prod_name
; -
匹配範圍: 含有1-5 Ton就行,不管前面後面有沒有東西
select prod_name from products where prod_name REGEXP '[1-5] Ton' order by prod_name
;
結果:.5 Ton
1 Ton
2 Ton -
跳脫字元,包括‘. \ | []’
為了匹配特殊字元,必須使用\為前導。\-表示查詢-, \.表示查詢.
select vend_name from vendors where vend_name REGEXP '\\.' order by vend_name;
結果: Furball INC.
其他語言中用單個\來轉義,但是mysql中\來轉義
匹配字元類
類 | 說明 | |
---|---|---|
:alnum: | 任意字母和數字(同[a-zA-z]) | |
:alpha: | 任意字元(同a-zA-Z) | |
:blank: | 空格和製表(同\t) | |
:digit: | 任意數字,同[0-9] | |
:lower: | 任意小寫字母,同[a-z] | |
:upper: | 任意大寫字母,同[A-Z] |
如果匹配多個字元
重複元字元
元字元 | 說明 | |
---|---|---|
* | 0個或者多個匹配 | |
+ | 1個或者多個匹配 | 等於 |
? | 0個或者1個匹配 | 等於 |
n | 指定書目的匹配 | |
不少於指定數目的匹配 | ||
匹配數目的範圍 | m不超過255 |