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

如何使用SQL查询JSON格式表中指定迭代项的名称?

嗨 Simon,针对你想从JSON格式的数据里提取编号为0的迭代项名称(也就是Toto)的需求,不同的SQL数据库有不同的实现语法,我给你整理了几种主流数据库的具体写法,你可以根据自己用的数据库来选:

MySQL 数据库

如果你的JSON字段(假设字段名为iterations)存储的是数组结构,比如[{"name":"Toto"}, {"name":"Other"}],可以用->>运算符或者JSON_UNQUOTE+JSON_EXTRACT组合来提取:

-- 简化写法(推荐)
SELECT iterations->>'$[0].name' AS item_name 
FROM table1 
WHERE id=1;

-- 等价的完整函数写法
SELECT JSON_UNQUOTE(JSON_EXTRACT(iterations, '$[0].name')) AS item_name 
FROM table1 
WHERE id=1;

这里$[0].name的意思是:$代表整个JSON对象,[0]定位到数组的第一个元素(下标从0开始),.name提取该元素的name属性。

PostgreSQL 数据库

PostgreSQL对JSON的支持很灵活,假设字段类型是json或jsonb,可以用箭头运算符直接定位:

-- 写法1:链式箭头运算符
SELECT (iterations->0->>'name') AS item_name 
FROM table1 
WHERE id=1;

-- 写法2:使用json_extract_path_text函数
SELECT json_extract_path_text(iterations, '0', 'name') AS item_name 
FROM table1 
WHERE id=1;

->用来提取JSON元素(保留JSON类型),->>则直接提取文本类型的值。

SQL Server 数据库

SQL Server用JSON_VALUE函数来提取JSON中的标量值:

SELECT JSON_VALUE(iterations, '$.0.name') AS item_name 
FROM table1 
WHERE id=1;

这里的路径$.0.name逻辑和前面一致:$代表根对象,0是数组下标,name是目标属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:16