简体   繁体   English

如何提取嵌套的 json?

[英]How to extract nested json?

I have a table name 'my doc'.我有一个表名“我的文档”。 And there is a column which is a nested json called 'element'.还有一列是嵌套的 json,称为“元素”。 The structure is as below.结构如下。

I wanna extract the element_id as a column.我想将 element_id 提取为一列。 How to make it with sql?如何用 sql 制作它? Thanks谢谢

{
   “element”: {
     “1”: {
          “element_id”:”3jakd4ks”,
          “type”: “square”,
          “name”: “eggplant”
           },
      
      “2”: {
          “element_id”:” ieh3iusk”;
          “type”: “circle”,
          “name”: “orange”
           },

      “3”: {
          “element_id”:”766wjdhh”;
          “type”: “circle”,
          “name”: “apple”
           }
      }
}

If you are working with SQL Server, and your data is stored in a table, the syntax would be something like this.如果您正在使用 SQL 服务器,并且您的数据存储在表中,则语法将是这样的。 Your schema may be different, but refer to Microsoft documentation for more details.您的架构可能不同,但请参阅 Microsoft 文档了解更多详细信息。 https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15 https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15

SELECT  v.*
FROM    Table1 AS t
        CROSS APPLY
        OPENJSON(t.JSONColumn)
        WITH (
                 ResultID NVARCHAR(MAX) '$.element' AS JSON
             ) AS Returned
        CROSS APPLY (
                        SELECT  element_id
                                ,type
                                ,name
                        FROM
                                OPENJSON(Returned.ResultID)
                                WITH (
                                         element_id VARCHAR(MAX) '$.element_id'
                                         ,type VARCHAR(MAX) '$.type'
                                         ,name VARCHAR(MAX) '$.name'
                                     )
                    ) AS v;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM