在使用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 | +---------------------------------------------+
但是此选项不起作用。
首先,请注意,它REGEXP_REPLACE可以 部分 匹配字符串,.*并且在搜索词之前和之后都不需要。
REGEXP_REPLACE
.*
该\字符应以定义一个反斜杠进行转义,因为\本身允许MySQL的引擎逃逸字符。请参阅此MySQL 8文档:
\
注意: 由于MySQL在字符串中使用C转义语法(例如,\n表示换行符),因此必须\将在 expr 和 pat 参数中使用的任何值都加倍。
注意:
由于MySQL在字符串中使用C转义语法(例如,\n表示换行符),因此必须\将在 expr 和 pat 参数中使用的任何值都加倍。
\n
因此,您需要
REGEXP_LIKE("aaa abc ccc", "\\babc\\b")