我无法通过首字母搜索字符串。例如,如果我有" animal"," ant"," abs"在我的数据库中,我想查询""返回"动物"和" ant" (不区分大小写)。我用sqlite3得到了这个工作:
Thing.where("name LIKE ?", params[:query] + '%')
但是,在PostgreSQL中不起作用(用于推送到Heroku的数据库)。使用PostgreSQL的正确查询是什么?
答案 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,我建议开发也这样做,以防止出现这样的进一步错误!