首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >嵌套Json数组合并

嵌套Json数组合并
EN

Stack Overflow用户
提问于 2018-05-21 10:06:32
回答 1查看 649关注 0票数 1

我在我的表中有一个列保存了json数据:

代码语言:javascript
复制
declare @json nvarchar(max)
set @json = N'
{
    "Companies": [
        {
            "CompanyId": "A",
            "Employee": null
        },
        {
            "CompanyId": "B",
            "Employee": [
                {
                    "EmployeePictureId": null,
                    "Name": "Employee1"
                },
                {
                    "EmployeePictureId": "PictureId2",
                    "Name": "Employee2"
                }
            ]
        },
        {
            "CompanyId": "C",
            "Employee": [
                {
                    "EmployeePictureId": null,
                    "Name": "Employee3"
                },
                {
                    "EmployeePictureId": null,
                    "Name": "Employee4"
                }
            ]
        }
    ]
}
'

是否有可能得到如下结果:

代码语言:javascript
复制
{
   "EmployeePictureIds": ["PictureId2"]
}

使用Json_QueryJson_ValueOPENJSON...

仅获取EmployeePictureId并跳过空(Null)数据

顺便说一下,数组中元素的数量是不确定的。

EN

回答 1

Stack Overflow用户

发布于 2018-05-23 20:44:23

在SQL Server 2017中,您可以使用以下查询:

代码语言:javascript
复制
select json_query(QUOTENAME(STRING_AGG('"' + STRING_ESCAPE( A.EmployeePictureId , 'json') 
                  + '"', char(44)))) as [EmployeePictureIds]
FROM OPENJSON(@json, '$.Companies')
WITH 
( 
  CompanyId  NVARCHAR(MAX),
  Employee  NVARCHAR(MAX)  as json  
) as B
cross apply openjson (B.Employee)  
with  
(  
    EmployeePictureId VARCHAR(50),  
    [Name] VARCHAR(50)
) as A     
where A.EmployeePictureId is not null
for json path , WITHOUT_ARRAY_WRAPPER

您提供的JSON的结果:

添加另一个非空EmployeePictureId的结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50441109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档