可能重复:
MySQL - How to search for exact word match using LIKE?
例如,如果我试图获取带有“ever”字样的行,我可以这样做......
SELECT * FROM 'table' WHERE `title` LIKE %ever%
但这也会给我带有“永远,永远,永远”字样的标题的结果。
我怎样才能找到包含“ever”作为自己单词的标题?
答案 0 :(得分:4)
使用REGEXP
正则表达式在搜索字词周围使用字词边界[[:<:]]word[[:>:]]
进行匹配:
SELECT * FROM `table` WHERE `title` REGEXP '[[:<:]]ever[[:>:]]'
请注意,默认情况下,这不区分大小写。区分大小写,您需要在BINARY
模式下匹配它:
SELECT * FROM `table` WHERE `title` REGEXP BINARY '[[:<:]]ever[[:>:]]'
由于它无法使用索引,因此在大型表上性能可能会很差。
编辑:抱歉,我有PCRE边界,MySQL不支持。
答案 1 :(得分:2)
您可以使用REGEXP
以及[[:<:]]
和[[:>:]]
字边界标记:
SELECT *
FROM table
WHERE keywords REGEXP '[[:<:]]ever[[:>:]]'