REGEXP 與 RLIKE

expr REGEXP pat, expr RLIKE pat
  • expr 傳入的字串
  • pat 比對的規則運算式

由pat產生規則運算式模型,在進行expr與pat模型的比對運算,pat必須是規則運算式。
如果expr比對pat結果吻合則回傳1,否則回傳0。
如果pat或expr其中一個是NULL,則回傳NULL。
RLIKE是REGEXP的同義詞,用途是提供與mSQL的相容性。
pat模型不一定是文字字串,可以是一個字串表達式或Table中的Collumn。
備註:
因為MySQL在字串中使用C語言的脫逸字元語法(例如,用『\n』代表一個換行字元),在REGEXP字串中,必須使用兩個『\』來表達。
除了傳入字串使用二進位字串之外,REGEXP會忽略大小寫。
mysql> SELECT 'Monty!' REGEXP 'm%y%%';
-> 0
mysql> SELECT 'Monty!' REGEXP '.*';
-> 1
mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
-> 1
mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
-> 1 0
mysql> SELECT 'a' REGEXP '^[a-d]';
-> 1

REGEXP和RLIKE在判斷文字時會使用資料目前的字元集,預設字元集是latin1 (cp1252 West European)。
警告:REGEXP和RLIKE是在byte-wise fashion下運作,因此不支援多字節字元,使用多字節字元將產生不可預期的回傳值。因此不支援中文字元。

沒有留言: