正則表達式之初見
下面的語法檢索列prod_name包含文本1000的所有行
SELECT * FROM products WHERE prod_name REGEXP '1000';
使用正則表達式語言中一個特殊的字符.,它表示匹配任意一個字符
SELECT * FROM products WHERE prod_name REGEXP '.000';
SELECT * FROM products WHERE prod_name LIKE '1000';
和
SELECT * FROM products WHERE prod_name REGEXP '1000';
執行上面兩條語句,會發現第一條語句不返回數據,而第二條語句會返回一條。
LIKE匹配整個列。如果被匹配的文本在列值中未出現,LIKE將不會找到它,相應的行也不被返回(除非使用通配符)。而REGEXP在列值內進行匹配,如果被匹配的文本在列值中出現,REGEXP將會找到它,相應的行將被返回。REGEXP也能匹配整個列(和LIKE相同的作用)使用^和$定位符即可。
MySQL中正則表達式匹配不區分大小寫(即,大寫和小寫都匹配)。爲區分小寫,可用BINARY關鍵字。
正則表達式之匹配特殊字符
正則表達式語言由具有特定含義的特殊字符構成。如果需要匹配特殊字符,應該怎麼辦,例如匹配 . 的值,需要轉義,
需要用\爲前導。\\表示查找\,\.表示查找.。
多數正則表達式實現使用單個反斜槓轉義特殊字符,以便能使用這些字符本身。但MySQL要求兩個反斜槓(MySQL自己解釋一個,正則表達式庫解釋另一個)。
正則表達式之定位元字符
^表示文本的開始
$表示文本的結尾
[[:<:]]表示詞的開始
[[:>:]]表示詞的結尾
例如匹配文本以1開頭的文本