在ActiveRecord中使用Postgresql与sqlite3中的字母进行搜索

时间:2016-02-18 01:47:30

标签: ruby-on-rails postgresql activerecord heroku sqlite

我无法通过首字母搜索字符串。例如,如果我有" animal"," ant"," abs"在我的数据库中,我想查询""返回"动物"和" ant" (不区分大小写)。我用sqlite3得到了这个工作:

Thing.where("name LIKE ?", params[:query] + '%')

但是,在PostgreSQL中不起作用(用于推送到Heroku的数据库)。使用PostgreSQL的正确查询是什么?

2 个答案:

答案 0 :(得分:2)

在PostgreSQL中,您必须使用ILIKE而不是LIKE来进行不区分大小写的模式匹配。

答案 1 :(得分:1)

您的查询将是:

Thing.where("name LIKE '?%'", params[:query])

这使得查询case insensitive

Thing.where("lower(name) LIKE '?%'", params[:query].to_s.downcase)

如果你的作品使用Postgres,我建议开发也这样做,以防止出现这样的进一步错误!