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

如何从DB2数据库的JSON数组中提取ID值?

DB2中提取嵌套JSON字符串数组内ID的正确方法

问题原因

原查询出错的核心原因是:DTL_PRD列里的ProductList值是被双引号包裹的字符串类型JSON数组,并非原生JSON数组。直接用JSON_VALUE(DTL_PRD,'$.ProductList[*]')无法遍历,因为[*]遍历语法仅适用于原生JSON数组,不能直接作用于字符串格式的JSON文本。

正确解决方案

需要先把ProductList对应的字符串解析为原生JSON数组,再通过JSON_TABLE遍历提取ID:

SELECT 
    P.ID_PROD
FROM 
    RTN_PRD,
    JSON_TABLE (
        -- 先提取ProductList的字符串值,再解析为可遍历的JSON数组
        JSON_PARSE(JSON_VALUE(DTL_PRD, '$.ProductList')),
        COLUMNS (
            ID_PROD VARCHAR(100) PATH '$.ID'
        )
    ) P

关键说明

  • JSON_VALUE(DTL_PRD, '$.ProductList'):提取出ProductList字段对应的字符串内容(即"[{\"ID\":\"1111\",...}]")。
  • JSON_PARSE():将上述字符串转换为DB2可识别的原生JSON数组,让JSON_TABLE能通过PATH语法遍历数组内的每个对象。
  • 若你的DB2版本不支持JSON_PARSE,可尝试用JSON_SCALAR()替代(适配部分旧版本):
    SELECT 
        P.ID_PROD
    FROM 
        RTN_PRD,
        JSON_TABLE (
            JSON_SCALAR(JSON_VALUE(DTL_PRD, '$.ProductList')),
            COLUMNS (
                ID_PROD VARCHAR(100) PATH '$.ID'
            )
        ) P
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:47:18