2

我在我的Rails應用程序,哪些SQL我想要的模糊搜索是這樣的:與活動記錄查詢界面模糊搜索

select * from `user` where name like '%abc%' 

我一直試圖做這樣的:

name = 'abc' 
User.where("name like '%?%'", name) 

它失敗了,在控制檯登錄它:

select * from `user` where name like '%'abc'%' 

最後我想這

name = 'abc' 
User.where("name like ?", '%' + name + '%') 

它工作。

但我認爲它不喜歡rails方式,有沒有更好的方法來做到這一點?

+2

你的最後一次嘗試正常的,但更好地與插'User.where( 「名字怎麼樣?」,「%{name}的% 「)。(良好的口碑評分) – 2014-09-22 10:35:05

+0

缺少#在上面的回答中,我相信? – jaydel 2016-05-13 14:44:41

回答

1
User.where("name REGEXP ?", 'regex_str') 

和regex_str應該是MySQL的正則表達式字符串

試試這個..

+0

所以通過數據庫中的正則表達式找到更好? – 2014-09-22 10:46:30

+2

請解釋此代碼如何幫助解決原始問題。另請格式化(縮進)您的代碼塊以提高可讀性。答案的目標不僅是要解決原始問題,還要幫助該主題的更多讀者理解基本問題和解決方案。只有代碼的瀏覽器被認爲是低質量的帖子。 – Pred 2014-09-22 11:05:01

+0

這只是一行代碼,我編輯它。我指定了拉力賽方式來解決問題。我不確定完全正則表達式是否更好。 – Sontya 2014-09-22 11:23:12