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

如何在SQL Server中将JSON数组属性拆分为多行结果?

在SQL Server中从JSON数组提取指定属性为多行结果

SQL Server的JSON_VALUE确实不支持数组通配符[*],JSON_QUERY也只能返回完整的JSON对象或数组,无法直接拆分数组元素为单独行。要实现你的需求,使用OPENJSON函数结合CROSS APPLY是最直接的解决方案,以下是两种可行写法:

方法一:通过OPENJSON的WITH子句直接映射属性

SELECT j.name AS Value
FROM authors a
CROSS APPLY OPENJSON(a.detailsColumn, '$.books')
WITH (
    name NVARCHAR(MAX) '$.name'  -- 定义要提取的属性及对应数据类型
) j
WHERE a.id = '1234';

方法二:先拆分数组元素再提取属性

如果不需要提前定义数据类型,也可以先拆分数组得到每个元素的JSON对象,再用JSON_VALUE提取name属性:

SELECT JSON_VALUE(j.[value], '$.name') AS Value
FROM authors a
CROSS APPLY OPENJSON(a.detailsColumn, '$.books') j
WHERE a.id = '1234';

关键说明

  • OPENJSON(a.detailsColumn, '$.books')会将detailsColumn中的books数组拆分为多行,每行对应一个数组元素(JSON对象)
  • CROSS APPLY用于将authors表的每行数据与拆分后的JSON数组行关联,确保只返回目标作者对应的书籍名称
  • 两种方法都能将数组中的每个name值作为结果集的单独行返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:12:33