Megosztás a következőn keresztül:


Az OPENJSON használata az alapértelmezett sémával

A következőkre vonatkozik: Az SQL Server 2016 (13.x) és újabb verziói Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Database a Microsoft Fabricben

Az OPENJSON alapértelmezett sémával egy olyan táblát ad vissza, amely az objektum minden tulajdonságához vagy a tömb minden eleméhez egy sort tartalmaz.

Íme néhány példa, amelyek az alapértelmezett sémát használják OPENJSON . További információ és további példák: OPENJSON (Transact-SQL).

Példa – Objektum minden tulajdonságának visszaadása

Query

SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}') 

Results

Key Value
name John
surname Doe
age 45

Példa – Tömb minden elemének visszaadása

Query

SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]') 

Results

Key Value
0 en-GB
1 en-UK
2 de-AT
3 es-AR
4 sr-Cyrl

Példa – JSON konvertálása ideiglenes táblává

Az alábbi lekérdezés a információs objektum minden tulajdonságát visszaadja.

DECLARE @json NVARCHAR(MAX)

SET @json=N'{  
     "info":{    
       "type":1,  
       "address":{    
         "town":"Bristol",  
         "county":"Avon",  
         "country":"Great Britain"  
       },  
       "tags":["Sport", "Water polo"]  
    },  
    "type":"Basic"  
 }'

SELECT *
FROM OPENJSON(@json,N'lax $.info')

Results

Key Value Típus
típus 1 0
address { "town":"Bristol", "county":"Avon", "country":"Nagy-Britannia" } 5
tags [ "Sport", "Vízilabda" ] 4

Példa – Relációs adatok és JSON-adatok egyesítése

Az alábbi példában a SalesOrderHeader tábla egy SalesReason szöveges oszlopot tartalmaz, amely egy SalesOrderReasons tömböt tartalmaz JSON formátumban. A SalesOrderReasons objektumok olyan tulajdonságokat tartalmaznak, mint a "Gyártó" és a "Minőség". A példa létrehoz egy jelentést, amely minden értékesítési rendeléssort összekapcsol a kapcsolódó értékesítési okokhoz az értékesítési okok JSON-tömbjének kibontásával, mintha az okok egy külön gyermektáblában lennének tárolva.

SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)

Ebben a példában az OPENJSON egy értékesítési okokból álló táblát ad vissza, amelyben az okok értékoszlopként jelennek meg. A CROSS APPLY operátor az egyes értékesítési rendelési sorokat az OPENJSON táblaértékes függvény által visszaadott sorokhoz illeszti.

További információ a JSON-ról az SQL Database Engine-ben

Microsoft-videók

A beépített JSON-támogatás vizuális bemutatásához tekintse meg az alábbi videókat: