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

Redshift提取JSON数组字段数据报错,如何获取指定字段内容?

解决Redshift提取JSON数组数据的问题

错误原因

你存储的JSON使用了单引号,但标准JSON要求键名和字符串值必须用双引号,Redshift的JSON解析函数仅兼容标准JSON格式,这是导致解析报错的核心原因。

解决方案

先将列中的单引号替换为双引号,转换为标准JSON格式,再展开数组并提取目标字段:

完整SQL语句

SELECT
    JSON_EXTRACT_PATH_TEXT(json_obj, 'IDIndex') AS IDIndex,
    JSON_EXTRACT_PATH_TEXT(json_obj, 'History') AS History
FROM
    (
        SELECT
            UNNEST(JSON_PARSE(REPLACE(REPLACE(<your_column_name>, '''', '"'), '""', '"'))) AS json_obj
        FROM
            <your_table_name>
    ) t;

语句说明

  • REPLACE(<your_column_name>, '''', '"'):将列中所有单引号替换为双引号,转换为标准JSON格式;第二个REPLACE用于处理替换后可能出现的双引号重复问题。
  • JSON_PARSE(...):将处理后的字符串解析为JSON数组。
  • UNNEST(...):把JSON数组拆分成单独的JSON对象行,实现数组的横向展开。
  • JSON_EXTRACT_PATH_TEXT(json_obj, '字段名'):从每个JSON对象中提取指定字段的值。

预期输出

执行上述语句后,将得到你需要的结果格式:

IDIndex  History
            
0001       4
0002       2
0003       2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:31:16