如何在ActiveRecord中执行LIKE %查询?

16

我正在尝试查找一些包含特定字符串的项。如果我做:

MyModel.where("description LIKE ?",keyword)

它将生成一个精确匹配的查询。我想让它生成LIKE %keyword%查询。我该如何做?

5个回答

24
like_keyword = "%#{keyword}%"    
MyModel.where("description LIKE ?", like_keyword)

不起作用。生成的查询以 LIKE'%关键字%' 结尾,会抛出异常。 - Geo
谢谢。我正在使用 LIKE 运算符进行搜索,但卡住了。我预先定义了我的 like 关键字,然后执行以下操作:collection = Model.where("attribute like ?", "% #{keyword} %") - Tass

11
MyModel.where("description LIKE (?)", "%#{keyword}%")

1
Model.where("name LIKE 'SH%'")

它将获取所有以SH开头的名称。 它将百分之百地工作。 例如:SH123,SH2343


将此项从-1领域解救出来。如果用户未提交名称参数,则这是一个不错的选择。 - fatfrog

0

对于PostgreSQL,它将是

MyModel.where("description ILIKE ?", "%#{query}%")

0

你可以使用 ILIKE 来实现这个功能

MyModel.where("description ILIKE (?)", "%#{keyword}%")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接