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

PostgreSQL提取JSON字段数据返回空值null问题咨询

问题原因

你存储的JSON结构中,顶级键inputs对应的值是数组类型,而非直接的对象类型,你编写的查询语句跳过了数组索引定位步骤,直接访问数组下的desc字段,路径匹配不到对应节点,因此返回空值。
从你给出的示例JSON可以看到:"inputs":[{"name": "ambient",...}],方括号包裹的内容就是数组,包含desc字段的对象存储在该数组的第一个(下标为0)位置。

解决方法

根据业务场景选择对应查询写法即可:

  • 确定inputs数组下永远只有1个元素,直接指定下标0取值即可:
-- 写法1:使用json_extract_path_text函数
SELECT json_extract_path_text(inputs::json,'inputs','0','desc') AS desc
FROM source_redshift.staticprompts;

-- 写法2:使用箭头运算符简化写法
SELECT (inputs::json -> 'inputs' -> 0 ->> 'desc') AS desc
FROM source_redshift.staticprompts;
  • 如果inputs数组可能存在多个元素,需要展开数组提取所有元素的desc字段:
SELECT 
    json_extract_path_text(elem, 'desc') AS desc
FROM source_redshift.staticprompts,
     json_array_elements(inputs::json -> 'inputs') AS elem;

如果你使用的是表名前缀对应的Redshift环境,也可以使用Redshift专属的JSON数组取值函数实现:

SELECT json_extract_path_text(
    json_extract_array_element_text(inputs::json, 'inputs', 0),
    'desc'
) AS desc
FROM source_redshift.staticprompts;

内容的提问来源于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.06 21:18:02