我想做一个类似这样的查询

def self.search(search, page = 1 )
  paginate :per_page => 5, :page => page,
    :conditions => ["name LIKE '%?%' OR postal_code like '%?%'", search, search],   order => 'name'
end

但当它运行时,会添加引号,这会导致sql语句像这样出现

SELECT COUNT(*)
FROM "schools" 
WHERE (name LIKE '%'havard'%' OR postal_code like '%'havard'%')):

所以你可以看到我的问题.

我如何设置它,以便在最后的查询中有'%my_search%'个?

推荐答案

您的占位符被字符串替换,您没有正确处理它.

代替

"name LIKE '%?%' OR postal_code LIKE '%?%'", search, search

具有

"name LIKE ? OR postal_code LIKE ?", "%#{search}%", "%#{search}%"

Sql相关问答推荐

SQL -连接两个表的次数与第一个表中匹配的次数相同

当我们加入两个表时,我们可以省略GROUP BY中的列名吗?

SQL使最终结果显示两个表后的所有数据(匹配和不匹配)?

提高写密集型表的查询性能

PostgreSQL基于2个COLS的任意组合 Select 唯一行

SQL Select 最小优先级

PostgreSQL抽奖查询

NULL-生成的列中连接的字符串的输入

按日期时间(不包括秒)连接表

如何将`now()`作为SQL插入语句的一部分?

关于Postgres横向联接的谓词

按属性值 Select 数组元素Postgres Jsonb

SQL查询正在工作,但返回空结果

SQL中相同表内的VLOOKUP等价

删除行而不使数据库超载

在 SQL Server 中合并两个 XML 列

在Snowflake中如何使用SQL对版本字符串进行排序?

更新表 A,然后将新值插入表 B(包含更新内容的历史日志(log))

BigQuery Pivot 遗漏行

postgreSQL 中的循环表