2

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

现在,自动完成功能有效,但我的结果将包括特定字段中的内容包含查询的每一行。例如,如果我输入短语“ar”,我的结果将包括 car、guitar、bark 等。

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

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

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

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

4

1 回答 1

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

此构造仅适用于meta_where插件

于 2011-05-19T04:32:54.060 回答