从参数化查询中删除引号

时间:2020-09-01 13:14:44

标签: ruby-on-rails postgresql prepared-statement

我在rails上使用了postgresql和ruby,并且试图参数化我的查询,但是当我这样做时,它在填充我的占位符的参数上添加了引号。这是一个简单的示例:

query = <<-SQL
   select * from table1 ?
SQL

当我像这样执行上面的查询时:

result = Table1.find_by_sql([query, "where table1.locations IN (1,2,3)"])

它将使用条件周围的引号执行以下查询:

select * from table1 'where table1.locations IN (1,2,3)'

但是我想要:

select * from table1 where table1.locations IN (1,2,3)

1 个答案:

答案 0 :(得分:2)

您不能那样绑定查询的一部分,只能绑定值。如果要使用动态where子句,则必须使用字符串串联:

result = Table1.find_by_sql([query + " where table1.locations IN (1,2,3)")