使用mysql正則表達式

一、基本字符匹配git

1)檢索列prod_name包含文本1000的全部行:正則表達式

select prod_name from products where prod_name REGEXP '1000' order by prod_name;api

2).是正則表達式語言中一個特殊的字符,它表示匹配任意一個字符:spa

select prod_name from products where prod_name REGEXP '.000' order by prod_name;it

3)LIKE和REGEXP之間重要差異:class

select prod_name from products where prod_name LIKE '1000' order by prod_name;select

select prod_name from products where prod_name REGEXP '1000' order by prod_name;語言

LIKE匹配整個列,若是被匹配的文本在列值中出現,LIKE將不會找到它,相應的行也不被返回(除非使用通配符)。而REGEXP在列值內進行匹配,若是被匹配的文本在列值中出現,REGEXP將會找到它,相應的行將被返回。集合

二、進行OR匹配di

select prod_name from products where prod_name REGEXP '1000|2000' order by prod_name;

使用正則表達式1000|2000。|爲正則表達式OR的操做符,它表示匹配其中之一。

三、匹配幾個字符之一

select prod_name from products where prod_name REGEXP '[123] Ton' order by prod_name;

[123]定義一組字符,它的意思是匹配1或2或3。[]是另外一種形式的OR語句,事實上,正則表達式[123]Ton爲[1|2|3]Ton的縮寫。

四、匹配範圍

select prod_name from products where prod_name REGEXP '[1-5] Ton' order by prod_name;

[1-5]定義一個範圍,這個表達式意思是匹配1到5。

五、匹配特殊字符

爲了匹配特殊字符,必須用\\爲前導。\\-表示查找-,\\.表示查找.。

select vend_name from vend_name REGEXP '\\.' order by vend_name;

\\.匹配.,這種處理就是所謂的轉義(escaping),正則表達式內具備特殊意義的全部字符都必須以這種方式轉義。

六、匹配字符類

[:alnum:]       任意字符和數字(同[a-zA-Z0-9])

[:alpha:]       任意字符(同[a-zA-Z])

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

[:cntrl:]       ASCII控制字符(ASCII 0到31和127)

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

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

[:lower:]       任意小寫字母(同[a-z])

[:print:]       任意可打印字符

[:punct:]       既不在[:alnum:]又不在[:cntrl:]中的任意字符

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

[:upper:]       任意大寫字母(同[A-Z])

[:xdigit:]      任意十六進制數字(同[a-fA-F0-9])

七、匹配多個實例

1)正則表達式重複元字符

*               0個或多個匹配

+               1個或多個匹配(等於{1,})

?              0個或1個匹配(等於{0,1})

{n}             指定數目的匹配

{n,}            很多於指定數目的匹配

{n,m}           匹配數目的範圍(m不超過255)

2)select prod_name from products REGEXP '\\([0-9] sticks?\\])' order by prod_name;

\\(匹配),[0-9]匹配任意數字,sticks?匹配sticks和sticks(s後的?使s可選,由於?匹配它前面的任何字符的0次或1次出現),\\)匹配)。沒有?,匹配stick和sticks會很是困難。

3)select prod_name from products where prod_name REGEP '[[:digit:]]{4}' order by prod_name;

[:digit:]匹配任意數字,於是它爲數字的一個集合。{4}確切地要求它前面的字符(任意數字)出現4次,因此[[:digit:]]{4}匹配連在一塊兒的任意4位數字。

八、定位符

1)定位元字符:

^              文本的開始

$              文本的結尾

[[:<:]]        詞的開始

[[:>:]]        詞的結尾

2)select prod_name from products where prod_name REGEXP '^[0-9\\.]' order by prod_name;

^匹配串的開始。所以,^[0-9\\.]只在.或任意數字爲串中第一個字符時才匹配它們。沒有^,則還要多檢索出4個別的行(那些中間有數字的行)。

相關文章
相關標籤/搜索