Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用%通配符的Rails SQL查询在SQLite中工作,但在PostgreSQL中不工作?_Ruby On Rails_Postgresql_Wildcard - Fatal编程技术网

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
或。

我从来没有想过查询是否区分大小写。非常感谢。我最终将查询中的所有内容都设置为小写,因为它与这两种类型的数据库都兼容。编辑:向问题添加最终代码。