如何在 MySQL 查询中使用正则表达式单词边界?
例如,我想匹配“产品”或“时事通讯”,
它适用于OR
,
IF(? = 'product' OR ? = 'newsletter', ... , ...)
但是正则表达式呢?我想它会像下面这样?
IF(? REGEXP '^('product'||'newsletter')+$', ..., ... )
SELECT *
FROM tbl
WHERE description REGEXP '[[:<:]]red[[:>:]]|[[:<:]]blue[[:>:]]'
或者,作为选择表达式:
SELECT IF(description REGEXP '[[:<:]]red[[:>:]]|[[:<:]]blue[[:>:]]', 1, 0) AS is_matched, tbl.*
FROM description
您可以RLIKE
用作同义词,但REGEXP
似乎更受欢迎[需要引用]。
REGEXP 不区分大小写,除非与二进制字符串一起使用。
mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
-> 1 0