如果我跑:
with fields as (
select jsonb_each_text(jsonb_array_elements('[
{"a":1},
{"b":2},
{"c":3}]')) x
)
select (x).key, (x).value from fields;
我明白了:
key | value
-----+-------
a | 1
b | 2
c | 3
(3 rows)
这很好用,但我正在寻找一种方法来提取这些字段(key
和value
)而无需手动指定它们。换句话说,我可以直接从内部查询扩展复合类型值,而无需单独命名我要提取的部分(key
和value
)吗?这类似于ROW
函数的反转(从单个vaues创建复合类型)...
答案 0 :(得分:1)
这个怎么样?
with fields as (
select json_each_text(json_array_elements('[
{"a":1},
{"b":2},
{"c":3}]')) x
)
select (x).* from fields;