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

使用JSON_TABLE提取嵌套JSON数组时keyNames返回NULL如何修改查询

问题原因

你遇到的返回NULL的核心原因是:JSON结构里的keyNames是数组类型,直接将数组路径$.keyNames映射为TEXT类型时,JSON_TABLE无法完成隐式类型转换,所以返回空值。另外你原查询中keyId的定义行末尾缺少逗号,也会存在语法报错风险。

解决方案

根据你的实际使用场景选择对应修改方案即可:

  • 若keyNames数组固定只有1个元素,直接提取数组第一位元素即可,修改后的查询如下:
SELECT j.keyId, j.keyNames, j.keyDesc
FROM table t, JSON_TABLE(value, '$[*]' 
    COLUMNS(
      keyId TEXT PATH '$.keyId',
      keyNames TEXT PATH '$.keyNames[0]',
      keyDesc TEXT PATH '$.keyDesc')
    ) AS j;
  • 若keyNames数组可能包含多个元素,需要将所有元素拼接为逗号分隔的字符串,可通过嵌套解析数组再聚合的方式实现,修改后的查询如下:
SELECT j.keyId, GROUP_CONCAT(j.keyName SEPARATOR ', ') AS keyNames, j.keyDesc
FROM table t, 
JSON_TABLE(value, '$[*]' 
    COLUMNS(
      keyId TEXT PATH '$.keyId',
      keyDesc TEXT PATH '$.keyDesc',
      NESTED PATH '$.keyNames[*]' COLUMNS (
          keyName TEXT PATH '$'
      )
    )
) AS j
GROUP BY j.keyId, j.keyDesc;

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

相关产品推荐
方舟 Agent Plan

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

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