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

PostgreSQL 13:如何将JSON数组元素拆分为单独列查询

PostgreSQL 13 将JSON数组元素拆分为单独列的解决方案

你需要通过JSON数组索引提取来将数组中的每个元素映射到单独列,原查询仅取出了完整数组,未做拆分。以下是针对你的数据的实现方案:

完整查询语句

SELECT
  -- 提取dimensions数组的每个元素,索引从0开始
  json_data::json->'dimensions'->>0 AS dim_date,
  json_data::json->'dimensions'->>1 AS dim_not_set_1,
  json_data::json->'dimensions'->>2 AS dim_user_type,
  json_data::json->'dimensions'->>3 AS dim_traffic_source,
  json_data::json->'dimensions'->>4 AS dim_not_set_2,
  json_data::json->'dimensions'->>5 AS dim_not_set_3,
  -- 提取metrics数组中第一个对象的values数组元素
  json_data::json->'metrics'->0->'values'->>0 AS metric_val1,
  json_data::json->'metrics'->0->'values'->>1 AS metric_val2,
  json_data::json->'metrics'->0->'values'->>2 AS metric_val3,
  json_data::json->'metrics'->0->'values'->>3 AS metric_val4
FROM test;

关键说明

  • PostgreSQL的JSON数组索引从0开始,对应数组中元素的位置;
  • ->用于获取JSON对象/数组的子元素(返回JSON类型),->>用于将结果转为文本类型;
  • 对于metrics字段,它本身是一个包含单个对象的数组,所以需要先用->0定位到数组内的第一个对象,再提取其values数组的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:40:08