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

JSON_EXTRACT返回数组,如何提取其中的单个值?

提取JSON字段中的单个值

你的问题根源在于使用了$**递归通配符——它会匹配所有层级的指定键,哪怕只有一个匹配结果,也会返回数组格式。要拿到不带括号和引号的单个值,可以试试下面几种方法:

方法1:使用精确JSON路径(推荐)

既然你清楚JSON的明确结构,直接指定完整路径就能获取单个值,无需通配符:

-- 方式1:用->>运算符(自动去除引号)
SELECT userData->>'$.users.user.UserId' as UserId FROM userTable;
SELECT userData->>'$.users.user.FirstName' as FirstName FROM userTable;

-- 方式2:用JSON_EXTRACT+JSON_UNQUOTE组合
SELECT JSON_UNQUOTE(JSON_EXTRACT(userData, '$.users.user.UserId')) as UserId FROM userTable;

这两种写法都会直接返回26933或John,完全符合你的需求。

方法2:如果必须用通配符(不推荐)

要是因为特殊场景不得不使用$**,可以在路径末尾加[0]提取数组的第一个元素,再配合去引号操作:

SELECT userData->>'$**.UserId[0]' as UserId FROM userTable;
SELECT JSON_UNQUOTE(JSON_EXTRACT(userData, '$**.FirstName[0]')) as FirstName FROM userTable;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:01:17