Mysql 查询字符串或文本的一部分
使用Rails和MySQL。不确定是否有人问过,但找不到 我有以下记录:Mysql 查询字符串或文本的一部分,mysql,ruby-on-rails,Mysql,Ruby On Rails,使用Rails和MySQL。不确定是否有人问过,但找不到 我有以下记录: 1. I love Rails 2. I love Django 3. I code using Ruby on Rails ==== (1) 搜索:“我爱” 结果:“I loveRails”,“I loveDjango” ==== (2) 搜索:“爱” 结果:“我loveRails”,“我loveDjango” ==== (3) 搜索:“疾病” 结果:“我喜欢Rails”,“我使用RubyonRails编写代码” ==
1. I love Rails
2. I love Django
3. I code using Ruby on Rails
====
(1) 搜索:“我爱”
结果:“I loveRails”,“I loveDjango”
====
(2) 搜索:“爱”
结果:“我loveRails”,“我loveDjango”
====
(3) 搜索:“疾病”
结果:“我喜欢Rails”,“我使用RubyonRails编写代码”
====
(4) 搜索:“代码Ruby”
结果:“我使用RubyonRails编写代码”
====
我的代码是:
term = "%#{params[:term]}%"
shops = Shop.where("name LIKE ?", term)
它仅适用于搜索(1)和(2)。在执行搜索(3)和(4)时,如何编写代码以获得结果
非常感谢。我认为您需要在其中使用通配符(在原始SQL中) 或者更一般地说:
LIKE '%substring%'
找到了解决办法
我需要用%string%
将搜索短语中的每个单词包装起来
====
搜索(1):“我爱”
查询:从t中选择*,其中的名称类似于“%i%%love%”代码>
结果:“我爱Rails”,“我爱Django”
====
搜索(2):“爱”
查询:SELECT*fromthename,比如“%love%”代码>
结果:“我爱Rails”,“我爱Django”
====
搜索(3):“ails”
查询:从t中选择*名称,如“%ails%”代码>
结果:“我喜欢Rails”,“我使用RubyonRails编写代码”
====
搜索(4):“代码Ruby”
查询:从t中选择*,其中的名称类似于“%code%%Ruby%”代码>
结果:“我使用RubyonRails编写代码”
====
我的Ruby代码应该是:
term = "#{params[:term]}"
f_term = term.gsub /\b/, '%'
shops = Shop.where("name LIKE ?", f_term)
您可以在处进行测试。您应该添加一个链接,指向%和所有其他在SQLI中已使用%substring%
的可用字符的符号。请参阅添加的附加搜索4。
term = "#{params[:term]}"
f_term = term.gsub /\b/, '%'
shops = Shop.where("name LIKE ?", f_term)