mysql - 如何在mySQL搜索中搜索独立的单词?

标签 mysql ruby-on-rails ruby regex sqlite

我试图在句子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/

相关文章:

mysql - Nodejs到mysql连接错误

php - 更新数据库记录不起作用

mysql - 设置/更改 Rails id 自动增量值

mysql - ruby on rails 数据库迁移

ruby-on-rails - rails : configurable extensible modular application

ruby-on-rails - 没有路由匹配 [GET]/users

ruby - 如何使用 Ruby 将 STDOUT 复制到文件而不停止它在屏幕上显示

mysql - 通过CMD导入SQL数据库

php - 如何显示:none of data row in a for each array?

ruby-on-rails - 如何在 Rails 中测试任意路由?