包含以PHRASE开头的整个单词的字段内容的SQL查询

时间:2011-05-19 04:17:45

标签: sql ruby-on-rails meta-where

我正在尝试编写SQL查询来获取其字段包含多个关键字的行。查询的用途是获取使用jQuery实现的自动完成函数的结果。

现在,自动完成功能正常,但我的结果将包括特定字段中的内容包含查询的每一行。例如,如果我输入短语'ar',我的结果将包括汽车,吉他,树皮等。

我只想返回以短语开头的结果,因为用户很可能不会输入单词中间的随机片段。我可以使用Model.where((:name =~ "#{params[:q]}%") [我正在使用meta_where gem]来获取第一个单词以查询开头的所有行。

但是,我还要返回字段中第二个单词以查询字符串开头的行,即使第一个单词没有。

例如,对于行“black dog”和“dog food”,查询字符串“do”应返回两行,而查询字符串“do”不应返回“undone”。

我应该如何为这样的搜索编写SQL查询?

1 个答案:

答案 0 :(得分:2)

Model.where( (:name =~ "#{params[:q]}%") | (:name =~ "% #{params[:q]}%") )

此构造仅适用于meta_where插件