代码之家  ›  专栏  ›  技术社区  ›  yglodt

将JSON数组中的属性转换为逗号分隔的字符串

  •  0
  • yglodt  · 技术社区  · 3 年前

    我在Azure上的SQL Server表中有一个字符串列,其中包含以下数据:

     {
            "status": "success",
            "data": [
                {
                    "name": "Jane",
                    "type": 0
                },
                {
                    "name": "John",
                    "type": 0
                }
            ]
        }
    

    如何将其转换为逗号分隔的字符串,其中包含 "Jane, John" ?

    0 回复  |  直到 3 年前
        1
  •  1
  •   d0little    3 年前

    在这里,如何通过我的一些旧代码的片段来实现这一点,您应该能够循环遍历表并对每一行执行此操作。可能有一种更快的方法,但这会奏效。

    DECLARE @JSON NVARCHAR(200) = '{"status": "success", "data": [{"name": "Jane", "type": 0},{"name": "John", "type": 0}]}',
        @result nvarchar(max) = ''
    
    
    SELECT @result = @result + [value] + N', '
    FROM (
        SELECT DISTINCT data.value
        FROM OPENJSON(@JSON, '$.data') as jsondata
        CROSS APPLY OPENJSON(jsondata.value) as data
        WHERE data.[key] = 'name') a
    
    select @result = substring(@result, 1, (LEN(@result)-1))
    
    select @result