【发布时间】:2010-07-01 19:39:31
【问题描述】:
我有一个用于搜索的查询:条件如下:
: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}%"]
【问题讨论】:
标签: ruby-on-rails postgresql wildcard