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

标签 mysql sql regex

如何在 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 似乎更受欢迎[需要引用]

区分大小写

来自MySQL manual for REGEXP :

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

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

关于正则表达式中的 MySQL 和单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827125/

相关文章:

python - 使用 Python 从 HTML 中提取字符串不适用于正则表达式或 BeautifulSoup

javascript - 在 JavaScript 中使用正则表达式替换添加 ".js"扩展

mysql - 如何在Mysql中同时更新不同的行

sql - 连续的日期

sql - 在 Sybase SQL 查询中透视?

python - 替换子字符串,进行额外处理

mysql - 如何将SQL请求中的文本替换成ASCII字符的组合?

mysql - 酒店预订检查抵达日期和离开日期之间的空房吗?

Mysql Self Join查找同一张表中的父子关系

mysql - 结合两个复杂的查询