4

它在 MySQL (8.0.5+) 中无法使用 ICU-REGEXP 在单词边界上执行搜索。据我了解应该是a-la

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

但这个选项不起作用。

4

1 回答 1

6

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

\char 应该被转义以定义文字反斜杠,因为它\本身允许为 MySQL 引擎转义字符。请参阅此MySQL 8 文档

注意

因为 MySQL 在字符串中使用 C 转义语法(例如,\n表示换行符),所以您必须\将您在exprpat参数中使用的任何内容加倍。

因此,您需要

REGEXP_LIKE("aaa abc ccc", "\\babc\\b")
于 2018-07-11T16:13:49.183 回答