带有%通配符的Rails SQL查询在SQLite中有效,但在PostgreSQL中无效?[英] Rails SQL query with % Wildcards works in SQLite but not PostgreSQL?

本文是小编为大家收集整理的关于带有%通配符的Rails SQL查询在SQLite中有效,但在PostgreSQL中无效?的处理方法,想解了带有%通配符的Rails SQL查询在SQLite中有效,但在PostgreSQL中无效?的问题怎么解决?带有%通配符的Rails SQL查询在SQLite中有效,但在PostgreSQL中无效?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个用于搜索的查询:条件如下:

: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 很陌生.提前感谢您的帮助.

<小时>

解决方案

相关话题:12

这是我正在使用的修复:

:conditions => ['LOWER(family_name) LIKE ? OR LOWER(given_name) LIKE ?', "%#{params[:search].downcase}%", "%#{params[:search].downcase}%"]

推荐答案

LIKE 是 Postgres 中区分大小写的运算符.对于不区分大小写的模式匹配,请使用 ILIKE 或 其他标准方法.

本文地址:https://www.itbaoku.cn/post/1763814.html