开发者社区> 问答> 正文

与JSON数组交叉应用

我以以下格式存储表格中的数据-HMEEM.png

展开
收起
祖安文状元 2020-01-05 14:00:06 334 0
1 条回答
写回答
取消 提交回答
  • 您需要另外两个APPLY带有两个不同OPENJSON()调用的运算符。首次调用的是默认架构,结果是带有key,value和列的表type。第二个调用是使用带有适当列的显式架构,该列使用以下WITH子句定义:

    表:

    表:

    CREATE TABLE Data (
       CustomerID int,
       City nvarchar(50),
       Product nvarchar(max)
    )
    INSERT INTO Data
       (CustomerID, City, Product)
    VALUES
       (1, N'Delhi', N'[{"Products": [{"Id": "1", "Name": "TV"}, {"Id": "2", "Name": "Laptop"}]}]'),
       (2, N'Bamgalore', N'[{"Products": [{"Id": "1", "Name": "TV"}, {"Id": "2", "Name": "Laptop"}, {"Id": "3", "Name": "Mobile"}]}]')
    
    

    声明:

    SELECT d.CustomerID, j2.Id, j2.Name
    FROM Data d
    CROSS APPLY OPENJSON(d.Product, '$') j1
    CROSS APPLY OPENJSON(j1.[value], '$.Products') WITH (
       Id nvarchar(10) '$.Id',
       Name nvarchar(50) '$.Name'
    ) j2
    
    

    结果:

    ----------------------
    CustomerID  Id  Name
    ----------------------
    1           1   TV
    1           2   Laptop
    2           1   TV
    2           2   Laptop
    2           3   Mobile
    
    2020-01-05 14:00:29
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载