Partager via


Utiliser OPENJSON avec le schéma par défaut

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database in Microsoft Fabric

Utilisez OPENJSON le schéma par défaut pour renvoyer une table avec une ligne pour chaque propriété de l’objet ou pour chaque élément du tableau.

Voici quelques exemples qui utilisent OPENJSON avec le schéma par défaut. Pour plus d’informations et d’autres exemples, consultez OPENJSON (Transact-SQL).

Exemple : retourner chaque propriété d’un objet

Query

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

Results

Key Value
name John
surname Doe
age 45

Exemple : retourner chaque élément d’un tableau

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

Exemple : convertir des données JSON en table temporaire

La requête suivante retourne toutes les propriétés de l’objet d’informations .

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 Type
type 1 0
address { « town » :"Bristol », « county » :"Avon », « country » :"Grande-Bretagne » } 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 le moteur de base de données SQL

Vidéos Microsoft

Pour une présentation visuelle de la prise en charge JSON intégrée, consultez les vidéos suivantes :