首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询字符串或文本的部分

查询字符串或文本的部分
EN

Stack Overflow用户
提问于 2013-02-18 17:18:03
回答 2查看 88关注 0票数 0

使用Rails和MySQL。不知道是否有人问过,但找不到。

我有以下记录:

代码语言:javascript
复制
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编写代码”

====

我的代码是:

代码语言:javascript
复制
term = "%#{params[:term]}%"
shops = Shop.where("name LIKE ?", term)

它只适用于搜索(1)和(2)。在执行搜索(3)和(4)时,我如何编码以获得结果?

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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代码应该是:

代码语言:javascript
复制
term = "#{params[:term]}"
f_term = term.gsub /\b/, '%'
shops = Shop.where("name LIKE ?", f_term)

您可以在http://sqlfiddle.com/#!2/d63f5/4上测试这个

票数 0
EN

Stack Overflow用户

发布于 2013-02-18 17:33:12

我认为这里需要通配符(在原始SQL中)。

代码语言:javascript
复制
LIKE '%ails'

或更广泛地说:

代码语言:javascript
复制
LIKE '%substring%'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14941771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档