Partager via


Utiliser OPENJSON avec un schéma explicite

S’applique à : SQL Server 2016 (13.x) et versions ultérieures d’Azure SQL Database AzureSQL Managed InstanceAzure Synapse Analytics (pool SQL serverless uniquement)Point de terminaison d’analytique SQL dans Microsoft FabricWarehouse dans microsoft FabricSQL Database dans Microsoft Fabric SQL Database dans Microsoft Fabric

Utilisez OPENJSON avec un schéma explicite pour retourner une table formatée comme spécifié dans l'expression WITH.

Voici quelques exemples qui utilisent OPENJSON avec un schéma explicite. Pour plus d’informations, consultez OPENJSON (Transact-SQL).

Exemple : mettre en forme la sortie à l’aide de la clause WITH

La requête suivante renvoie les résultats présentés dans le tableau suivant. Notez comment la AS JSON clause renvoie des valeurs en tant qu’objets JSON au lieu de valeurs scalaires dans col5 et array_element.

DECLARE @json NVARCHAR(MAX) =
N'{"someObject":   
    {"someArray":  
      [  
          {"k1": 11, "k2": null, "k3": "text"},  
          {"k1": 21, "k2": "text2", "k4": { "data": "text4" }},  
          {"k1": 31, "k2": 32},  
          {"k1": 41, "k2": null, "k4": { "data": false }}     
       ]  
    }  
 }'  

SELECT * FROM  
 OPENJSON(@json, N'lax $.someObject.someArray')  
WITH ( k1 int,   
        k2 varchar(100),  
        col3 varchar(6) N'$.k3',  
        col4 varchar(10) N'lax $.k4.data',  
        col5 nvarchar(MAX) N'lax $.k4' AS JSON, 
        array_element nvarchar(MAX) N'$' AS JSON  
 )  

Results

k1 k2 col3 col4 col5 array_element
11 NULL "text" NULL NULL {"k1 » : 11, « k2 » : null, « k3 » : « text"}
21 "text2" NULL "text4" { « data » : « text4 » } {"k1 » : true, « k2 » : « text2 », « k4 » : { « data » : « text4 » } }
31 "32" NULL NULL NULL {"k1 » : 31, « k2 » : 32 }
41 NULL NULL false { « data » : false } {"k1": 41, "k2": null, "k4": { "data": false } }

Exemple : chargement de JSON dans une table SQL Server.

L’exemple suivant charge l’intégralité d’un objet JSON dans une table SQL Server .

DECLARE @json NVARCHAR(MAX) = '{  
  "id" : 2,  
  "firstName": "John",  
  "lastName": "Smith",  
  "isAlive": true,  
  "age": 25,  
  "dateOfBirth": "2015-03-25T12:00:00",  
  "spouse": null  
  }';  

  INSERT INTO Person  
  SELECT *   
  FROM OPENJSON(@json)  
  WITH (id int,  
        firstName nvarchar(50), lastName nvarchar(50),   
        isAlive bit, age int,  
        dateOfBirth datetime2, spouse nvarchar(50))  

En savoir plus sur JSON dans le moteur de base de données SQL

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