Sql 如何在postgres中将json列表转换为行?
我有一个返回json列表的查询:Sql 如何在postgres中将json列表转换为行?,sql,json,postgresql,jsonb,Sql,Json,Postgresql,Jsonb,我有一个返回json列表的查询: select type.value -> 'components' as json_data from manifests m left join jsonb_array_elements(m.json_data->'type') as type on true 这将返回以下数据 [{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}
select type.value -> 'components' as json_data
from manifests m left join
jsonb_array_elements(m.json_data->'type') as type on true
这将返回以下数据
[{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}]
如果我将其用作以下文本,我可以进一步进行:
select *
from jsonb_array_elements(
'[{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}]' )
给予
{"name": "xxx", "version": "1.1"}
{"name": "xxx2", "version": "1.2"}
但是,如何使用第一个查询达到相同的结果呢?我无法使用子查询使其工作
更新:我的原始数据如下所示:
{
"lastUpdated": 1569393969656,
"type": [
{
"components": [
{
"name": "xxx",
"version": "1.1"
},
{
"name": "xxx2",
"version": "1.2"
}
],
"description": "xxx"
}
]
}
谢谢您可以应用
jsonb\u array\u elements()
函数两次:
select jsonb_array_elements(elm) as json_data
from
(
select jsonb_array_elements(json_data -> 'type') -> 'components' as elm
from manifests ) q
能够提取子查询中的相关数组元素
查询执行失败原因:SQL错误[22023]:错误:无法从对象中提取元素我的原始表不包含这样的数据,这已经是转换的结果(请参阅第一个查询)我需要一个使用第一种方法的解决方案query@clairvoyant您能直接分享
json_data
的原始内容吗?我将包裹改为type,以避免给其他人带来任何混乱