Menggunakan OPENJSON dengan Skema Eksplisit (SQL Server)

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL tanpa server)

Gunakan OPENJSON dengan skema eksplisit untuk mengembalikan tabel yang diformat seperti yang Anda tentukan dalam klausa WITH.

Berikut adalah beberapa contoh yang menggunakan OPENJSON dengan skema eksplisit. Untuk informasi selengkapnya dan contoh lainnya, lihat OPENJSON (Transact-SQL).

Contoh - Gunakan klausa WITH untuk memformat output

Kueri berikut mengembalikan hasil yang diperlihatkan dalam tabel berikut. Perhatikan bagaimana klausul AS JSON menyebabkan nilai dikembalikan sebagai objek JSON alih-alih nilai skalar di col5 dan 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  
 )  

Hasil

k1 k2 col3 col4 col5 array_element
11 NULL "teks" 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 salah { "data": false } {"k1": 41, "k2": null, "k4": { "data": false } }

Contoh - Muat JSON ke dalam tabel SQL Server.

Contoh berikut memuat seluruh objek JSON ke dalam tabel 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))  

Pelajari selengkapnya tentang JSON di SQL Server dan Azure SQL Database

Video Microsoft

Untuk pengenalan visual dukungan JSON bawaan di SQL Server dan Azure SQL Database, lihat video berikut ini:

Lihat Juga

OPENJSON (Transact-SQL)