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

SQL Server如何提取JSON数组并转为逗号分隔的字符串列?

解决SQL Server中JSON数组转逗号分隔字符串的问题

问题原因

JSON_VALUE函数仅能提取JSON中的单个标量值(如字符串、数字),而$.fiskepind是JSON数组类型,并非标量值,因此直接调用会返回NULL。

解决方案

要将JSON数组转换为逗号分隔的字符串,可通过拆分数组+聚合拼接的方式实现,以下是适配不同SQL Server版本的两种写法:

方法1:SQL Server 2017及以上版本(推荐)

用OPENJSON拆分数组元素,再通过STRING_AGG函数直接聚合拼接:

declare @mg nvarchar(max);
set @mg = '{"fiskepind":["ko","hest","gris"]}';

SELECT 
    @mg AS original_json,
    STRING_AGG(value, ',') AS fiskepind_values
FROM OPENJSON(@mg, '$.fiskepind')

执行后fiskepind_values列会返回ko,hest,gris。

方法2:SQL Server 2016及更早版本

若无法使用STRING_AGG,可通过FOR XML PATH配合STUFF完成拼接:

declare @mg nvarchar(max);
set @mg = '{"fiskepind":["ko","hest","gris"]}';

SELECT 
    @mg AS original_json,
    STUFF((
        SELECT ',' + value
        FROM OPENJSON(@mg, '$.fiskepind')
        FOR XML PATH(''), TYPE
    ).value('.', 'nvarchar(max)'), 1, 1, '') AS fiskepind_values

STUFF函数用于移除拼接后开头多余的逗号。


内容的提问来源于stack exchange,提问作者Morten V. Gade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:25:35