我正在尝试编写SQL查询来获取其字段包含多个关键字的行。查询的用途是获取使用jQuery实现的自动完成函数的结果。
现在,自动完成功能正常,但我的结果将包括特定字段中的内容包含查询的每一行。例如,如果我输入短语'ar',我的结果将包括汽车,吉他,树皮等。
我只想返回以短语开头的结果,因为用户很可能不会输入单词中间的随机片段。我可以使用Model.where((:name =~ "#{params[:q]}%")
[我正在使用meta_where
gem]来获取第一个单词以查询开头的所有行。
但是,我还要返回字段中第二个单词以查询字符串开头的行,即使第一个单词没有。
例如,对于行“black dog”和“dog food”,查询字符串“do”应返回两行,而查询字符串“do”不应返回“undone”。
我应该如何为这样的搜索编写SQL查询?
答案 0 :(得分:2)
Model.where( (:name =~ "#{params[:q]}%") | (:name =~ "% #{params[:q]}%") )
此构造仅适用于meta_where插件