You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 12.9:如何将JSONB数组中的键提取为查询结果列并展开数据

没问题,这在PostgreSQL 12.9里完全可以实现,核心是用jsonb_array_elements函数把jsonb数组拆分成多行记录,再结合字段提取就能得到你要的格式。

直接上查询语句:

SELECT 
    row_number() OVER (ORDER BY e.id, f.family_obj->>'role') AS id,
    e.first_name,
    e.last_name,
    f.family_obj->>'name' AS family_name,
    f.family_obj->>'role' AS role
FROM 
    EmployeeFamily e,
    jsonb_array_elements(e.family) AS f(family_obj);

简单解释下关键部分:

  • jsonb_array_elements(e.family):把每个员工的family字段(jsonb数组)拆分成独立的jsonb对象行,这里用别名f(family_obj)来指代这些拆分出的对象。
  • ->>操作符:从jsonb对象里提取指定键对应的文本值,确保返回的是字符串类型而不是jsonb类型。
  • row_number() OVER (...):生成你结果里的连续自增id,按原表的id和家庭成员的role排序来保证顺序和你给出的示例一致。

执行这条语句后,就能得到你需要的扁平化结果啦。

内容的提问来源于stack exchange,提问作者mhsankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:22:33