【发布时间】:2016-12-08 22:00:09
【问题描述】:
我有一个创建查询的搜索功能。我的目标是搜索确切的单词,所以如果短语是“hello”,它应该只返回带有“hello”的结果(而不是“xhello”、“helloxx”等)。我的代码如下:
SELECT (...) WHERE x RLIKE '[[:<:]]word[[:>:]]'
它适用于大多数情况,但是 当短语是 f.e. 时问题就开始了'$hello' 或 'helloŁ' 等 - 特殊字符破坏了功能。
有办法处理吗?
【问题讨论】:
-
您可以检查单词是否出现在字符串的开头/结尾以及是否被空格包围:
RLIKE '(^|[[:space:]])word([[:space:]]|$)' -
Wiktor - 仍然无法正常工作
-
它怎么不“工作”?见regex101.com/r/dX5aV9/1。它正在工作。
-
$hello匹配RLIKE '[[:<:]]hello[[:>:]]'。helloŁ失败,因为Ł是一个字母。请详细说明您对“单词”是/不是什么的所有规则。