我正在优化查询,因为当文本中包含数字和重复的关键字时,全文搜索返回的结果不明确。
我要做的是在文本上提取数字,并对结果进行排序时将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一起使用,我给出的数字后面可能有符号和字符。
预先感谢
答案 0 :(得分:1)
您可以使用
REGEXP '([[:<:]]|_)55([[:>:]]|_)'
如果您正在使用使用ICU正则表达式库的MySQL 8.x及更高版本,请使用
REGEXP '(\\b|_)55(\\b|_)'
请参见regex demo
(\\b|_)
匹配单词边界或_
,([[:<:]]|_)
匹配起始单词边界或_
而([[:>:]]|_)
匹配尾随单词边界或_
。