Condividi tramite


Usare OPENJSON con lo schema predefinito

Si applica a: SQL Server 2016 (13.x) e alle sue versioni successive Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

L'uso della funzione OPENJSON con lo schema predefinito restituisce una tabella con una riga per ogni proprietà dell'oggetto o per ogni elemento nella matrice.

Di seguito sono riportati alcuni esempi che usano OPENJSON con lo schema predefinito. Per altre informazioni ed esempi, vedere OPENJSON (Transact-SQL)).

Esempio: restituire ogni proprietà di un oggetto

Query

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

Risultati

Chiave valore
name John
surname Doe
età 45

Esempio: restituire ogni elemento di una matrice

Query

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

Risultati

Chiave valore
0 En-GB
1 en-UK
2 de-AT
3 es-AR
4 sr-Cyrl

Esempio: convertire JSON in una tabella temporanea

La query seguente restituisce tutte le proprietà dell'oggetto info .

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')

Risultati

Chiave valore Type
type 1 0
address { "town":"Bristol", "county":"Avon", "country":"Great Britain" } 5
tag [ "Sport", "Water polo" ] 4

Esempio: combinare dati relazionali e dati JSON

Nell'esempio seguente, la tabella SalesOrderHeader include una colonna di testo SalesReason che contiene una matrice di SalesOrderReasons in formato JSON. Gli oggetti SalesOrderReasons contengono proprietà come "Produttore" e "Qualità". Nell'esempio viene creato un report che unisce ogni riga dell'ordine di vendita ai motivi di vendita correlati espandendo la matrice JSON dei motivi di vendita come se questi fossero archiviati in una tabella figlio separata.

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

In questo esempio, OPENJSON restituisce una tabella dei motivi di vendita in cui questi vengono visualizzati come colonna valore. L'operatore CROSS APPLY unisce ogni riga dell'ordine di vendita alle righe restituite dalla funzione con valori di tabella OPENJSON.

Altre informazioni su JSON in SQL Server e nel database SQL di Azure

Video Microsoft

Per un'introduzione visiva al supporto JSON predefinito in SQL Server e nel database SQL di Azure, vedere i video seguenti:

Vedi anche

OPENJSON (Transact-SQL)