作用:
匹配文本中特殊的串,在where子句中使用正則表達式來更好地過濾數據
like和regexp的區別:
like匹配整個列;
regexp在列值中匹配(它也可以使用^和$來匹配整個列值)。
MySQL正則表達式匹配不區分大小寫:
爲了區分,使用binary
.:表示匹配任意一個字符。
使用’|’進行or匹配:
例:
selete p_name
from product
where p_name regexp ‘1000|2000’
order by p_name;
使用”[]”,匹配幾個字符之一:
[]是另一形式的or語句
selete p_name
from product
where p_name regexp ‘[123] ton’
order by p_name;
區分:where p_name regexp ‘1|2|3 ton’
1或2或3ton
^ :在集合的開頭放置^,表示匹配除這些字符外任何東西,如:[^123]
-:定義範圍,如:[0-9]、[a-z]
轉義:匹配特殊字符:\作爲前導,如:”\-“查找’-‘;”\.”查找’.’;”\\”查找’\’
注意:大多數正則表達式使用單個反斜槓轉義特殊字符,但MySQL使用兩個。
匹配多個:
元字符 | 說明 |
---|---|
* | 0個或多個 |
+ | 一個或多個 |
? | 0個或一個 |
{n} | 指定數目 |
{n,} | 不少於n個 |
{n,m} | n-m個 |
例:
selete p_name
from product
where p_name regexp ‘\[0-9] sticks?\)’
order by p_name;
\[0-9] sticks?\):兩個”\”分別匹配‘(’’)’,sticks s後的?:?匹配它前面的字符0次或1次出現
例:
where p_name regexp ‘[[:digit:]]{4}’:匹配連在一起的4位數字
定位符:^:開始;$:結尾
以上,^有兩種作用:
在集合中([和]定義),用來否定集合;
串的開始處;