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

PostgreSQL如何将JSON中values数组的每个元素拆分为独立行

PostgreSQL 拆分JSON嵌套数组实现方案

你当前的查询已经完成了顶层JSON数组的拆分,只需要对每个配置对象内的values下拉选项数组做第二次拆分即可,具体实现如下:

最终查询语句

SELECT
  s.projectid,
  s.prompttype,
  el.inputs->>'name' AS name,
  el.inputs->>'desc' AS desc,
  el.inputs->>'type' AS type,
  -- 如需输出带引号的格式,改为 '"' || val.value || '"' AS option_value 即可
  val.value AS option_value,
  s.created,
  s.modified
FROM source_redshift.staticprompts AS s,
     -- 拆分顶层inputs配置数组
     jsonb_array_elements(s.inputs::jsonb) el(inputs)
-- 拆分每个配置项的values下拉选项数组
LEFT JOIN LATERAL jsonb_array_elements_text(
  -- 兼容无values字段的配置项(如type为string的输入项)
  COALESCE(el.inputs->'values', '[]'::jsonb)
) val(value) ON true;

说明

  • 如果你仅需要保留有下拉选项的行,删除LEFT JOIN LATERAL和ON true,将jsonb_array_elements_text(...) val(value)直接加到FROM后的列表里即可,无values的配置项会自动过滤
  • jsonb_array_elements_text会直接将JSON数组元素转换为文本类型,无需额外做类型转换
  • 若你的字段存储类型是json而非jsonb,把所有jsonb前缀替换为json即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:00:03