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:
- JSON as a bridge between NoSQL and relational worlds (JSON come ponte tra NoSQL e gli ambienti relazionali)