Menggunakan OPENJSON dengan Skema Eksplisit (SQL Server)
Berlaku untuk:SQL Server 2016 (13.x) dan yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Azure 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).
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 | "teks2" | 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 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))
Untuk pengenalan visual dukungan JSON bawaan di SQL Server dan Azure SQL Database, lihat video berikut ini: