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

MySQL如何从嵌套JSON字符串中提取指定的id字段值?

问题根源

你之前的写法返回NULL的核心原因是:[]数字索引仅适用于JSON数组类型的节点,而你提供的JSON结构中Elements下的所有子节点均为键值对对象结构,不存在数字索引,因此路径匹配失败。

正确提取写法

已知各级键名的场景

对于包含特殊字符(反斜杠)、数字开头的键名,需要在JSON路径中用双引号包裹键名:

-- 通用兼容写法,适配所有支持JSON_EXTRACT的数据库
TRIM(BOTH '"' FROM JSON_EXTRACT(info, '$.Elements."New\\Old\\Used\\Sold\\Blank"."123456".id')) AS id

如果使用MySQL 5.7及以上版本,可以用->>运算符直接实现提取+去引号,无需手动trim:

-- MySQL专属简化写法
info->>'$.Elements."New\\Old\\Used\\Sold\\Blank"."123456".id' AS id

键名动态不确定的场景

如果Elements下的子键名、下一级的数字键名是动态变化的,可以通过JSON_KEYS先动态获取键名再拼接路径,示例(MySQL环境):

SELECT 
  info->>CONCAT(
    '$.Elements.',
    JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(info, '$.Elements'), '$[0]')),
    '.',
    JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(info, CONCAT('$.Elements.', JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(info, '$.Elements'), '$[0]')))), '$[0]')),
    '.id'
  ) AS id
FROM 你的表名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:03