我有一个ruby数组,需要转换数组以支持PostgresSQL数组。
数组
ruby_array = ["9771", "9773", "9778", "9800", "9806"]
我需要将其转换为以下格式
postgresSQL_array = {"9771", "9773", "9778", "9800", "9806"}
使用ruby
如果你正在使用PG gem,使用PG::TextEncoder::Array
将Ruby数组转换为PostgreSQL数组
connection.exec(
"select $1::int[]",
[PG::TextEncoder::Array.new.encode([1, 2, 3])]
)
如果你使用的是Ruby on Rails,只需传递Array作为参数,它就会为你转换。
Model.where(nums: [1,2,3])
请注意,你可以用PostgreSQL数组做的大多数事情都可以用JSONB做得更好。
如果您只需要创建该格式的字符串,则可以对Ruby数组进行字符串化,删除第一个和最后一个字符并将其插入大括号之间。
irb(main):001:0> ruby_array = ["9771", "9773", "9778", "9800", "9806"]
=> ["9771", "9773", "9778", "9800", "9806"]
irb(main):002:0> postgresSQL_array = "{#{ruby_array.to_s[1...-1]}}"
=> "{"9771", "9773", "9778", "9800", "9806"}"
irb(main):003:0> puts postgresSQL_array
{"9771", "9773", "9778", "9800", "9806"}
=> nil