小编典典

如何在MySQL 8.0.5+中将REGEXP与正则表达式转义(如单词边界)一起使用?

mysql

在使用ICU-REGEXP在单词边界上执行搜索的MySQL(8.0.5+)中,它不起作用。据我了解,应该是

$ mysql -e 'SELECT REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*")'
+---------------------------------------------+
| REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*") |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+

但是此选项不起作用。


阅读 895

收藏
2020-05-17

共1个答案

小编典典

首先,请注意,它REGEXP_REPLACE可以 部分 匹配字符串,.*并且在搜索词之前和之后都不需要。

\字符应以定义一个反斜杠进行转义,因为\本身允许MySQL的引擎逃逸字符。请参阅此MySQL
8文档

注意:

由于MySQL在字符串中使用C转义语法(例如,\n表示换行符),因此必须\将在 expr pat
参数中使用的任何值都加倍。

因此,您需要

REGEXP_LIKE("aaa abc ccc", "\\babc\\b")
2020-05-17