Mysql-Like和Regexp一起使用

时间:2019-01-10 11:41:02

标签: mysql regex

我正在优化查询,因为当文本中包含数字和重复的关键字时,全文搜索返回的结果不明确。

我要做的是在文本上提取数字,并对结果进行排序时将X点的相关性增加。

除了一件事情,一切都顺利进行;

当我想提取数字Z并对其进行优先排序时,它还会计算其他数字,其中包括数字Z的任何部分。

例如;

Sample Data
###############
Text 55.A
Text 55_B
Text #55ABC
Text 551234.
Text 55677#
Text 556

    Query
###############
... CASE WHEN (myTable.title like "% 55%") THEN ...

Expected output
###############
Text 55.A
Text 55_B

Actual output
###############
Text 55.A
Text 55_B
Text #55ABC
Text 551234.
Text 55677#
Text 556

我如何将REGEXP与LIKE一起使用,我给出的数字后面可能有符号和字符。

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以使用

REGEXP '([[:<:]]|_)55([[:>:]]|_)'

如果您正在使用使用ICU正则表达式库的MySQL 8.x及更高版本,请使用

REGEXP '(\\b|_)55(\\b|_)'

请参见regex demo

(\\b|_)匹配单词边界或_([[:<:]]|_)匹配起始单词边界或_([[:>:]]|_)匹配尾随单词边界或_