MySQL WHERE子句內使用正則表達式搜索

正則表達式之初見

下面的語法檢索列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開頭的文本
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章