可能重复:
MySQL - How to search for exact word match using LIKE?
例如,如果我想用“ever”这个词排成一行,我可以这样做…
SELECT * FROM 'table' WHERE `title` LIKE %ever%
但这也会给我的标题的结果是“永远,然而,永远”。
我怎样才能找到只有“曾经”这个词的标题呢?
最佳答案
使用REGEXP
正则表达式在搜索词周围使用单词边界[[:<:]]word[[:>:]]
进行匹配:
SELECT * FROM `table` WHERE `title` REGEXP '[[:<:]]ever[[:>:]]'
注意,默认情况下这是不区分大小写的。对于区分大小写,您需要在
BINARY
模式下匹配它:SELECT * FROM `table` WHERE `title` REGEXP BINARY '[[:<:]]ever[[:>:]]'
但是,由于它不能使用索引,因此在大型表上的性能可能非常差。
编辑:抱歉,我有PCRE的边界,这是MySQL不支持的。