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

PostgreSQL 14中如何将字典列表字段转换为常规列

实现方法

当然可以,用PostgreSQL自带的JSON函数就能搞定,具体步骤如下:

假设你的表名为goods,存储字典列表的字段名为inventory_data(字段类型为json或jsonb),执行以下查询即可将JSON数组展开为常规列:

SELECT
    (item ->> 'id')::INT AS id,
    item ->> 'stock' AS stock,
    item ->> 'name' AS name,
    item ->> 'store' AS store
FROM
    goods,
    jsonb_array_elements(goods.inventory_data) AS item;

关键函数说明

  • jsonb_array_elements():将JSON数组拆分成多行单个JSON对象(如果字段是json类型,替换为json_array_elements())
  • ->>:提取JSON对象中指定键的文本值,再根据实际类型转换(比如id转成INT)

如果需要保留原表的其他字段,可以加上原表字段,示例:

SELECT
    goods.id AS original_table_id,
    (item ->> 'id')::INT AS inventory_id,
    item ->> 'stock' AS stock,
    item ->> 'name' AS name,
    item ->> 'store' AS store
FROM
    goods,
    jsonb_array_elements(goods.inventory_data) AS item;

这样就能把嵌套的JSON数组完全展开成你需要的常规表格格式,不管数组里包含多少个结构一致的字典都能处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:55:17