微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从参数化查询中删除引号

如何解决从参数化查询中删除引号

我在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,3)'

但是我想要:

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。