可能重复:
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不支持的。

07-25 20:47