Udostępnij za pośrednictwem


Używanie OPENJSON ze schematem jawnym

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (tylko bezserwerowa pula SQL)punktu końcowego analizy SQL w usłudze Microsoft FabricWarehouse w usłudze Microsoft Fabric

Użyj OPENJSON z jawnym schematem, aby zwrócić tabelę sformatowaną zgodnie z warunkami określonymi w klauzuli WITH.

Poniżej przedstawiono kilka przykładów, które używają OPENJSON z jawnym schematem. Aby uzyskać więcej informacji i więcej przykładów, zobacz OPENJSON (Transact-SQL).

Przykład — użyj klauzuli WITH, aby sformatować dane wyjściowe

Poniższe zapytanie zwraca wyniki przedstawione w poniższej tabeli. Zwróć uwagę, że klauzula AS JSON powoduje zwracanie wartości jako obiektów JSON zamiast wartości skalarnych w col5 i 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  
 )  

wyniki

k1 k2 col3 kolumna 4 kolumna5 array_element
11 null "tekst" null null {"k1": 11, "k2": null, "k3": "text"}
dwadzieścia jeden "text2" null "text4" { "data": "text4" } {"k1": true, "k2": "text2", "k4": { "data": "text4" } }
31 "32" null null null {"k1": 31, "k2": 32 }
41 null null fałszywy { "data": false } {"k1": 41, "k2": null, "k4": { "data": false } }

Przykład — ładowanie kodu JSON do tabeli programu SQL Server.

Poniższy przykład ładuje cały obiekt JSON do tabeli programu 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))  

Dowiedz się więcej o JSON w silniku bazy danych SQL

Aby zapoznać się z wizualnym wprowadzeniem do wbudowanej obsługi kodu JSON w programie SQL Server i usłudze Azure SQL Database, zobacz następujące wideo: