使用%Wildcards的Rails SQL查询在SQLite中工作但在PostgreSQL中不起作用?

我有一个查询我用于搜索:这样的条件:

:conditions => ['family_name LIKE ? OR given_name LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"] 

查询在SQLite上本地工作正常,但是当我在PostgreSQL上推送到Heroku时,只有第一个%适用于family_name和given_name。 换句话说,它将匹配出现在单词结尾但不出现在开头或中间的关键字。

示例:现有记录包含:family_name =>“Washington”和:given_name =>“George”

搜索“ington”或“rge”将检索此记录。 搜索“Wash”或“Geo”不会。

我是一个新用户,对于rails来说我是个新手。 在此先感谢您的帮助。


相关主题: 1 2

这是我正在使用的修复:

 :conditions => ['LOWER(family_name) LIKE ? OR LOWER(given_name) LIKE ?', "%#{params[:search].downcase}%", "%#{params[:search].downcase}%"] 

LIKE是Postgres中区分大小写的运算符。 对于不区分大小写的模式匹配,请使用ILIKE或其他标准方法 。