Ruby on rails 使用%通配符的Rails SQL查询在SQLite中工作,但在PostgreSQL中不工作?
我有一个用于搜索的查询,条件如下:Ruby on rails 使用%通配符的Rails SQL查询在SQLite中工作,但在PostgreSQL中不工作?,ruby-on-rails,postgresql,wildcard,Ruby On Rails,Postgresql,Wildcard,我有一个用于搜索的查询,条件如下: :conditions => ['family_name LIKE ? OR given_name LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"] 该查询在SQLite上本地运行良好,但当我在PostgreSQL上推到Heroku时,只有前%对family_name和given_name都有效。换句话说,它将匹配出现在单词末尾而不是开头或中间的关键字 示例: 有一个现有记录:family
:conditions => ['family_name LIKE ? OR given_name LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"]
该查询在SQLite上本地运行良好,但当我在PostgreSQL上推到Heroku时,只有前%对family_name和given_name都有效。换句话说,它将匹配出现在单词末尾而不是开头或中间的关键字
示例:
有一个现有记录:family\u name=>“Washington”和:given\u name=>“George”
搜索“ington”或“rge”将检索此记录。搜索“Wash”或“Geo”将不起作用
我是一个新用户,对rails非常陌生。提前感谢你的帮助
解决方案 相关线程: 以下是我正在使用的修复程序:
:conditions => ['LOWER(family_name) LIKE ? OR LOWER(given_name) LIKE ?', "%#{params[:search].downcase}%", "%#{params[:search].downcase}%"]
LIKE
是Postgres中区分大小写的运算符。对于不区分大小写的模式匹配,请使用ILIKE
或。我从来没有想过查询是否区分大小写。非常感谢。我最终将查询中的所有内容都设置为小写,因为它与这两种类型的数据库都兼容。编辑:向问题添加最终代码。