2011-05-19 75 views
2

我想寫一個SQL查詢來獲取其字段包含多個關鍵字的行。查詢的用途是獲取使用jQuery實現的自動完成功能的結果。SQL查詢字段內容包含以PHRASE開頭的整個單詞

現在,自動完成工作,但我的結果將包括其特定字段中的內容包含查詢的每一行。例如,如果我輸入短語'ar',我的結果將包括汽車,吉他,樹皮等。

我只想返回以短語開頭的結果,因爲用戶很可能不會輸入在詞的中間的隨機片段中。我可以通過使用Model.where((:name =~ "#{params[:q]}%") [我正在使用meta_where寶石]獲取第一個字開頭的所有行。

但是,我想還返回行字段中的第二個字以查詢字符串開始,即使第一個字不是。

例如,對於「黑狗」和「狗食」行,查詢字符串'do'應返回兩個行,而查詢字符串'do'不應返回'undone'。

我應該如何爲這樣的搜索編寫SQL查詢?

+0

正則表達式的支持依賴和版本... – 2011-05-19 04:32:28

+0

此正則表達式外形相似是因爲meta_where插件 - 當它到達DB它被轉化的LIKE查詢 – 2011-05-19 06:16:37

回答

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

該工程施工與meta_where插件每個數據庫供應商僅

相關問題