我想在句子fox
中找到The foxy brown fox jumped over the lazy dog
这个词。
目前,我使用以下SQL搜索:
SELECT *
FROM sentences
WHERE sentence LIKE '%fox%'
由于存在狡猾而不仅仅是狐狸,因此找到了句子。如何独立查找fox
?
我在Ruby on Rails中实现此搜索,因此上述SQL的语法将转换为以下内容:
query = 'fox'
result = Sentence.where("sentence LIKE :search_term", {:search_term => "%#{query}%"})
答案 0 :(得分:3)
您需要使用REGEXP工具以及“单词边界”表达式。 [[:<:]]
和[[:>:]]
。例如
SELECT * FROM sentences WHERE sentence REGEXP '[[:<:]]fox[[:>:]]'
这将处理'fox'前面或后跟逗号,字符串的开头/结尾或其他非单词字符的情况。单词字符定义为[_A-Za-z0-9]
。以下是doc:http://dev.mysql.com/doc/refman/5.1/en/regexp.html