我有一个查询,我正在使用这样的条件进行搜索:
: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 还很陌生。预先感谢您的帮助。
解决方案
这是我正在使用的修复程序:
:conditions => ['LOWER(family_name) LIKE ? OR LOWER(given_name) LIKE ?', "%#{params[:search].downcase}%", "%#{params[:search].downcase}%"]
最佳答案
LIKE
是 Postgres 中区分大小写的运算符。对于不区分大小写的模式匹配,请使用 ILIKE
或 other standard methods .
关于ruby-on-rails - 带 % 通配符的 Rails SQL 查询在 SQLite 中有效但在 PostgreSQL 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3161108/