3

可能重复:
MySQL - 如何使用 LIKE 搜索完全匹配的单词?

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

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

但这也会为我提供带有“永远,然而,永远”字样的标题的结果。

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

4

2 回答 2

4

使用REGEXP正则表达式[[:<:]]word[[:>:]]在搜索词周围使用单词边界进行匹配:

SELECT * FROM `table` WHERE `title` REGEXP '[[:<:]]ever[[:>:]]'

请注意,默认情况下这是不区分大小写的。为了区分大小写,您需要在BINARY模式下匹配它:

SELECT * FROM `table` WHERE `title` REGEXP BINARY '[[:<:]]ever[[:>:]]'

由于它不能使用索引,因此在大型表上性能可能会很差。

编辑:对不起,我在那里有 PCRE 边界,MySQL 不支持。

于 2013-01-04T21:15:38.577 回答
2

您可以使用REGEXP[[:<:]][[:>:]]字边界标记:

SELECT *
FROM table 
WHERE keywords REGEXP '[[:<:]]ever[[:>:]]'
于 2013-01-04T21:19:44.580 回答