我想用 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/