使用Rails和MySQL。不知道是否有人问过,但找不到。
我有以下记录:
1. I love Rails
2. I love Django
3. I code using Ruby on Rails====
(1)搜索:“我爱”
结果:“我爱 Rails",”我爱 Django“
====
(2)搜索:“爱”
结果:"I Rails","I Django“
====
(3)搜索:"ails“
结果:“我爱Rails",”我使用Rails编写代码“
====
(4)搜索:“代码Ruby”
结果:“我使用Rails编写代码”
====
我的代码是:
term = "%#{params[:term]}%"
shops = Shop.where("name LIKE ?", term)它只适用于搜索(1)和(2)。在执行搜索(3)和(4)时,我如何编码以获得结果?
非常感谢。
发布于 2013-02-19 03:49:31
找到了解决办法。
我需要将搜索短语中的每个单词都用%string%包起来。
====
搜索(1):“我爱”
查询:SELECT * from t WHERE name LIKE "%i% %love%";
结果:“我爱Rails",”我爱Django“
====
搜索(2):“爱”
查询:SELECT * from t WHERE name LIKE "%love%";
结果:“我爱Rails",”我爱Django“
====
搜索(3):“烦恼”
查询:SELECT * from t WHERE name LIKE "%ails%";
结果:“我爱Rails",”我使用Rails编写代码“
====
搜索(4):“代码Ruby”
查询:SELECT * from t WHERE name LIKE "%code% %Ruby%";
结果:“我使用Rails编写代码”
====
我的Ruby代码应该是:
term = "#{params[:term]}"
f_term = term.gsub /\b/, '%'
shops = Shop.where("name LIKE ?", f_term)您可以在http://sqlfiddle.com/#!2/d63f5/4上测试这个
发布于 2013-02-18 17:33:12
我认为这里需要通配符(在原始SQL中)。
LIKE '%ails'或更广泛地说:
LIKE '%substring%'https://stackoverflow.com/questions/14941771
复制相似问题