我在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)
答案 0 :(得分:2)
您不能那样绑定查询的一部分,只能绑定值。如果要使用动态where
子句,则必须使用字符串串联:
result = Table1.find_by_sql([query + " where table1.locations IN (1,2,3)")