如何在mySQL搜索中搜索一个独立的单词?

时间:2011-07-27 02:36:35

标签: mysql ruby-on-rails ruby regex sqlite

我想在句子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}%"})

1 个答案:

答案 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

的链接