【发布时间】:2019-03-03 04:54:18
【问题描述】:
我有一个数组
ziparray = ["95626", "95645", "95837"]
我想将此传递给我的 sql 查询,
sql = "SELECT * from table_name WHERE code in ($1);"
res1 = conn.exec(sql, [ziparray])
它确实适用于单个值。
我正在使用 pg gem 并使用
连接到数据库conn = PG.connect()
我正在使用 postgres,它不需要双引号。我假设这是问题所在。 如何做到这一点。
更新
我可以使用
转换为所需的字符串str = "'"
str << ziparray.join("','")
str << "'"
#print str
但我猜问题在于传递多个参数。
这行得通-
res1 = conn.exec(fipscodesql, ['95626'])
但不是这个
res1 = conn.exec(fipscodesql, ['95626', '95625'])
这正是我将数组转换为字符串时所做的。我想这不是使用参数的正确方法。 有没有其他办法。
【问题讨论】:
-
res1 = conn.exec(sql, [ziparray].join(','))应该可以工作。 -
我正在尝试使用
str = ziparray.join("','")将其转换为字符串。我得到的输出是95626','95645','95837。缺少开始和结束引号。如何在这里使用join? -
[ziparray].map { |zip| "'#{zip}'" }.join(',')
标签: ruby postgresql pg