PostgreSQL 13中如何查询嵌套JSON数组元素?
解决PostgreSQL 13中JSON嵌套数组的结构化查询问题
你的原查询问题在于硬编码了数组索引(-> 0、-> 1),只能手动指定获取固定位置的Rows元素,没法自动遍历所有嵌套记录,且重复定义列名也会导致结果混乱。要实现每行对应一条嵌套数组记录的结构化输出,需要用PostgreSQL的JSON数组展开函数处理:
正确查询语句
SELECT (row -> 'Values' ->> 0) AS Lid, (row -> 'Values' ->> 1) AS L2LicenseId FROM test, json_array_elements(json_data::json -> 'Rows') AS row;
代码说明
json_array_elements(json_data::json -> 'Rows'):将Rows对应的JSON数组展开为单行记录,每个row代表数组里的单个对象(如{"Values": [...]})。row -> 'Values' ->> 0:从每个展开的row对象中,提取Values数组的第1个元素(索引从0开始)作为Lid,->>会将JSON值转换为文本类型;同理提取第2个元素作为L2LicenseId。
执行该查询后,会得到两行结果,每行对应一条嵌套的License记录,完全匹配你预期的结构化输出。
内容的提问来源于stack exchange,提问作者Vikas J
相关产品推荐
相关产品推荐

