Utiliser OPENJSON avec le schéma par défaut
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
L’utilisation de OPENJSON avec le schéma par défaut permet de retourner une table comprenant une ligne pour chaque propriété de l’objet ou pour chaque élément du tableau.
Voici quelques exemples d’utilisation de OPENJSON avec le schéma par défaut. Pour plus d’informations et d’exemples, consultez OPENJSON (Transact-SQL).
Exemple : retourner chaque propriété d’un objet
Requête
SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}')
Résultats
Clé | Valeur |
---|---|
name | John |
surname | Doe |
âge | 45 |
Exemple : retourner chaque élément d’un tableau
Requête
SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]')
Résultats
Clé | Valeur |
---|---|
0 | en-GB |
1 | en-UK |
2 | de-AT |
3 | es-AR |
4 | sr-Cyrl |
Exemple : convertir des données JSON en table temporaire
La requête suivante retourne toutes les propriétés de l’objet 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')
Résultats
Clé | Valeur | Type |
---|---|---|
type | 1 | 0 |
address | { "town":"Bristol", "county":"Avon", "country":"Great Britain" } | 5 |
tags | [ "Sport", "Water polo" ] | 4 |
Exemple : combiner des données relationnelles et des données JSON
Dans l’exemple suivant, la table SalesOrderHeader a une colonne de texte SalesReason qui contient un tableau d’objets SalesOrderReasons au format JSON. Les objets SalesOrderReasons contiennent des propriétés telles que « Manufacturer » (Fabricant) et « Quality » (Qualité). L’exemple crée un rapport qui relie chaque ligne de commande client au motif de vente associé en développant le tableau JSON de motifs de vente comme si les motifs étaient stockés dans une table enfant distincte.
SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)
Dans cet exemple, OPENJSON retourne une table de motifs de vente dans laquelle les motifs forment la colonne de valeurs. L’opérateur CROSS APPLY relie chaque ligne de commande client aux lignes retournées par la fonction table OPENJSON.
En savoir plus sur JSON dans SQL Server et Azure SQL Database
Vidéos Microsoft
Pour obtenir une présentation visuelle de la prise en charge intégrée de JSON dans SQL Server et Azure SQL Database, consultez les vidéos suivantes :