ruby-on-rails - 带 % 通配符的 Rails SQL 查询在 SQLite 中有效但在 PostgreSQL 中无效?

标签 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_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 中区分大小写的运算符。对于不区分大小写的模式匹配,请使用 ILIKEother standard methods .

关于ruby-on-rails - 带 % 通配符的 Rails SQL 查询在 SQLite 中有效但在 PostgreSQL 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3161108/

相关文章:

postgresql - 如何在 Bucardo Postgresql multi master 中处理序列

ssl - 通配符证书名称的格式是什么?

ruby-on-rails - 通过 Git 更新/部署 Rails 应用程序的最佳工作流程是什么?

ruby-on-rails - 多个 before_action 调用错误的代码风格吗?

ruby-on-rails - 无法安装 Nokogiri

作为值的 CSS3 通配符选择器

表的 MySQL LIKE 通配符

ruby-on-rails - 跟踪值(value)随时间变化的算法

sql - Postgresql ltree 查询以查找具有最多 child 的 parent ;排除根

django - Apache 用户对 PostgreSQL 数据库的权限