Rails PostgreSQL使用LIKE进行非区分大小写的搜索

时间:2012-03-25 14:29:26

标签: ruby ruby-on-rails-3 postgresql

我在控制器中有这个:

Konkurrencer.where("title LIKE ?", "%#{params[:q]}%").limit(4)

我认为此查询区分大小写。它不应该区分大小写。

2 个答案:

答案 0 :(得分:30)

您可以在其中使用ILIKE代替:

Konkurrencer.where("title ILIKE ?", "%#{params[:q]}%").limit(4)

来自doc:

  

可以使用关键字ILIKE而不是LIKE来进行匹配   根据活动区域设置不区分大小写。这不在   SQL标准,但是PostgreSQL扩展。

答案 1 :(得分:2)

使用LOWER ...

在PostgreSQL中搜索不区分大小写

示例:

def self.search(client, date_start, date_end)
       joins(:customer).where("LOWER(customers.name) LIKE ? AND date >= ? AND date <= ?", "%#{client}%", date_start, date_end)
end