如何在 MySQL 查询中使用正则表达式词边界?
例如,我想匹配 'product' 或 'newsletter',
它与 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
关于正则表达式中的 MySQL 和单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827125/