PostgreSQL 12.17如何从JSON数组中提取指定字段值
提取JSON数组嵌套对象的字段值(PostgreSQL 12.17)
你已经用json_array_elements展开了数组,接下来只需要通过PostgreSQL的JSON运算符逐层提取嵌套字段即可,直接给你可用的SQL示例:
SELECT elem->'left'->>'value' AS left_value FROM public.rule_definition, json_array_elements(design->'design') AS elem;
代码说明:
design->'design':从public.rule_definition表的design列中,取出顶层的design数组(对应你描述的JSON结构里的数组)json_array_elements(...) AS elem:把数组展开为多行,每行对应一个数组元素,命名为elem(JSON类型)elem->'left':从每个数组元素里取出left对象(JSON类型)->>'value':从left对象中提取value字段的文本值;如果需要保留JSON类型而非文本,换成->'value'即可
额外处理:
如果存在数组元素缺少left或value字段的情况,可以用COALESCE设置默认值避免空值:
SELECT COALESCE(elem->'left'->>'value', '无值') AS left_value FROM public.rule_definition, json_array_elements(design->'design') AS elem;
如果你的design列是jsonb类型,只需要把json_array_elements替换为jsonb_array_elements即可,运算符用法完全一致。
内容的提问来源于stack exchange,提问作者Les
相关产品推荐
相关产品推荐

