Bagikan melalui


Menggunakan OPENJSON dengan Skema Eksplisit

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru: Azure SQL Database,Azure SQL Managed Instance,Azure Synapse Analytics (hanya kumpulan SQL tanpa server)Titik akhir analitik SQL di Microsoft FabricWarehouse di database Microsoft FabricSQL di Microsoft Fabric

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

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

Contoh - Gunakan klausa WITH untuk memformat output

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

Results

k1 k2 col3 col4 col5 array_element
11 NULL "text" NULL NULL {"k1": 11, "k2": null, "k3": "teks"}
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 } }

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 Database Engine

Untuk pengenalan visual dukungan JSON bawaan, lihat video berikut ini: