2016-11-07 37 views
0

的結果我有一個JSON結構是這樣的:如何使用OPENJSON在子OPENJSON

Declare @layout NVARCHAR(MAX) = N' 
    { 
     "Sections": [ 
      { 
       "SectionName":"Section1", 
       "SectionOrder":1, 
       "Fields":[ 
        { 
         "FieldName":"Field1", 
         "FieldData":"Data1" 
        }, 
        { 
         "FieldName":"Field2", 
         "FieldData":"Data2" 
        } 
       ] 
      }, 
      { 
       "SectionName":"Section2", 
       "SectionOrder":2, 
       "Fields":[ 
        { 
         "FieldName":"Field3", 
         "FieldData":"Data3" 
        }, 
        { 
         "FieldName":"Field4", 
         "FieldData":"Data4" 
        } 
       ] 
      } 
     ] 
    } 
' 

如何查詢到Sections.Fields.FieldName =「字段3」的相同呢?

select * 
from OPENJSON(@layout,'$.Sections') 
WITH (
    SectionName nvarchar(MAX) '$.SectionName', 
    SectionOrder nvarchar(MAX) '$.SectionOrder', 
    Fields nvarchar(MAX) '$.Fields' as JSON 
) 

這是據我所知,我不能再下去或它不會返回任何結果。

回答

0

在閱讀文檔後想通了,完全有效!

SELECT SectionName, FieldName, FieldData FROM (
    select * 
    from OPENJSON(@layout,'$.Sections') 
    WITH (
     SectionName nvarchar(MAX) '$.SectionName', 
     SectionOrder nvarchar(MAX) '$.SectionOrder', 
     Fields nvarchar(MAX) '$.Fields' as JSON 
    ) 
) as Sections 
CROSS APPLY OPENJSON(Fields,'$') 
WITH (
    FieldName nvarchar(MAX) '$.FieldName', 
    FieldData nvarchar(MAX) '$.FieldData' 
) 
+0

該文檔是一件神奇的事情。應該首先諮詢。 – dfundako

相關問題