我试图在句子The Foxy Brown Fox Jump over the Lazy Dog
中找到单词fox
。
目前,我使用以下 SQL 进行搜索:
SELECT *
FROM sentences
WHERE sentence LIKE '%fox%'
由于存在 Foxy,而不仅仅是 Fox,因此找到了该句子。如何独立找到fox
?
我正在 Ruby on Rails 中实现此搜索,因此上述 SQL 的语法将转换为以下内容:
query = 'fox'
result = Sentence.where("sentence LIKE :search_term", {:search_term => "%#{query}%"})
最佳答案
您需要将 REGEXP 工具与“单词边界”表达式一起使用。 [[:<:]]
和[[:>:]]
。例如
SELECT * FROM sentences WHERE sentence REGEXP '[[:<:]]fox[[:>:]]'
这将处理“fox”前面或后面有逗号、字符串开头/结尾或其他非单词字符的情况。单词字符定义为 [_A-Za-z0-9]
。这是该文档的链接:http://dev.mysql.com/doc/refman/5.1/en/regexp.html
关于mysql - 如何在mySQL搜索中搜索独立的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6838877/