如何找到确切的单词而不是单词的一部分?

时间:2013-01-04 21:13:12

标签: mysql sql

  

可能重复:
  MySQL - How to search for exact word match using LIKE?

例如,如果我试图获取带有“ever”字样的行,我可以这样做......

SELECT * FROM 'table' WHERE `title` LIKE %ever%

但这也会给我带有“永远,永远,永远”字样的标题的结果。

我怎样才能找到包含“ever”作为自己单词的标题?

2 个答案:

答案 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[[:>:]]'