MySQL和正则表达式中的单词边界

3

我该如何在MySQL查询中使用正则表达式单词边界呢?

例如,我想匹配'product'或者'newsletter',

可以使用OR操作符来实现,但是需要注意:

IF(? = 'product' OR ? = 'newsletter', ... , ...)

那么正则表达式呢?我猜应该像下面这样:

IF(? REGEXP '^('product'||'newsletter')+$', ..., ... ) 

4
... IN ('product', 'newsletter') 的意思是什么? - Wiseguy
2个回答

5
SELECT *
FROM tbl
WHERE description REGEXP '[[:<:]]red[[:>:]]|[[:<:]]blue[[:>:]]'

或者,作为选择表达式:

SELECT IF(description REGEXP '[[:<:]]red[[:>:]]|[[:<:]]blue[[:>:]]', 1, 0) AS is_matched, tbl.*
FROM description

您可以使用RLIKE作为同义词,但REGEXP似乎更受欢迎[需要引用]

大小写敏感性

根据MySQL REGEXP手册

REGEXP不区分大小写,除非与二进制字符串一起使用。

mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
        -> 1  0

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接