2012-03-25 35 views

回答

25

您可以在那里使用ILIKE代替:

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

从DOC:

的关键字ILIKE可以用于替换LIKE匹配 不区分大小写的根据,使活动区域设置。这不是SQL标准中的 ,而是PostgreSQL扩展。

+0

只是觉得http://www.postgresql.org/docs/8.0/static/ functions-matching.html – 2012-03-25 14:36:33

+4

请不要使用过期版本的手册。你approriate版本号替换你的链接“8.0”(或者用“电流”代替) – 2012-03-25 14:48:48

+0

@a_horse_with_no_name感谢指出了这一点......做了回答 – ScottJShea 2012-03-25 14:50:33

2

对于采用较低的使用情况与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 
+0

良好的解决方案,因为在PostgreSQL和SQLite的作品。我没有使用MySQL进行测试。在我的情况下,我不得不降低搜索条件,为inst。 “%#{} client.downcase% – 2015-05-06 19:38:18