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编写代码” ==

使用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编写代码”

====

(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)