将LIKE子句与整个单词进行比较

时间:2013-12-31 14:50:11

标签: mysql sql sql-like

目前,我的SQL搜索查询使用带有LIKE通配符的%some-word-to-search%子句。

使用百分比通配符的问题是它返回包含我的搜索参数的一部分的所有行,例如:

如果我搜索汽车它还会向我显示漫画!有什么方法可以将like子句与整个单词进行比较,而不是将其中的一部分进行比较?

任何建议都将不胜感激......

2 个答案:

答案 0 :(得分:3)

您可以使用与字边界匹配的regular expression。例如,这将匹配文本包含“car”作为单个单词的行,即使它是第一个或最后一个单词,或与标点符号相邻:

SELECT * FROM mytable WHERE mytext REGEXP '[[:<:]]car[[:>:]]';

请注意,这些类型的查询需要进行表扫描。 full text index可以提供更好的效果。

答案 1 :(得分:0)

您还可以查看自然语言搜索功能匹配():

http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html