mysql - 用正则表达式逐字处理整个 "word"?

标签 mysql regex

我想用 MySQL 对一个变量进行 REGEXP 匹配,如下所示:

SELECT * 
  FROM table 
 WHERE table.CONTENT 
REGEXP CONCAT('([[:space:]]|[[:punct:]])', table.NAME, '([[:space:]]|[[:punct:]])') 

这工作正常,但 table.NAME 中可能包含正则表达式特殊字符(例如“|”),在这种情况下它会搞砸。是否有正则表达式运算符按字面意义处理整个字符序列并忽略其中的运算符?

例如,如果 table.NAME 的一行为“left|right”,我希望它仅在 table.CONTENT 字面上包含字符串“left|right”时才匹配。但除非我能以某种方式强制这样做,否则 MySQL 会将其视为运算符并查找“左”或“右”。

最佳答案

您的字符串应该有管道字符反斜杠转义,以便在正则表达式中使用。我没有看到任何专门用于转义正则表达式字符串的 mysql 函数,但您可以尝试使用 REPLACE添加反斜杠:

REPLACE( table.NAME, '|', '\|')

关于mysql - 用正则表达式逐字处理整个 "word"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791875/

相关文章:

javascript - 正则表达式匹配分隔符后的任何内容

php - 如何阻止谷歌云 sql 破坏数据库表

php - UTF-8贯穿始终

phpMyAdmin 参数错误

php - 使用字符串的唯一 int(11) mysql 值

mysql - 在 MySQL 中按数字顺序排序,然后按字母顺序排序

javascript - 捕获 <pre> </pre> 标签之间的所有内容

regex - 我无法通过 awk 处理数据

Sublime Text 片段中句点之前变量名称的正则表达式

sql - 删除编号重复超过 5 次的记录