【发布时间】:2019-10-03 23:54:45
【问题描述】:
我正在尝试将 postgreSQL(11.4 版)表输出到视图中的 JSON 对象,其中一列是需要一些特殊格式的 INT 数组。数组可以包含 4 到 10 个元素。
如果列(代码中的col_arr)包含{2、4、6、8、9},
我需要输出看起来像 {"option_1" : 2, "option_2" : 4, "option_3" : 6, "option_4" : 8, "option_5" : 9}
我尝试了大约 50 种不同的功能组合,下面的代码是我想出的,它实际上产生了我需要的东西。它看起来很可怕,而且我知道必须有一个更简单的解决方案,但我不知道它会是什么。任何建议将不胜感激。
SELECT cast('{ ' || string_agg('"' || propname || '" : ' || propval,' , ') || ' }' as json) as col_arr
FROM (SELECT t.table_id, a.elem as propval, 'option_' || a.nr as propname
FROM t_table AS t
LEFT JOIN LATERAL unnest(col_arr)
WITH ORDINALITY AS a(elem, nr) ON true) pt
GROUP BY table_id
【问题讨论】:
标签: arrays json postgresql