Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Database SQL SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
di Microsoft Fabric
Jenis data json menyimpan dokumen JSON dalam format biner asli.
Jenis json menyediakan penyimpanan fidelitas tinggi dokumen JSON yang dioptimalkan untuk kueri dan manipulasi yang mudah, dan memberikan manfaat berikut daripada menyimpan data JSON sebagai varchar atau nvarchar:
- Bacaan yang lebih efisien, karena dokumen sudah diurai
- Penulisan yang lebih efisien, karena kueri dapat memperbarui nilai individual tanpa mengakses seluruh dokumen
- Penyimpanan yang lebih efisien, dioptimalkan untuk pemadatan
- Tidak ada perubahan kompatibilitas dengan kode yang ada
Jenis json secara internal menyimpan data menggunakan pengodean UTF-8, Latin1_General_100_BIN2_UTF8. Perilaku ini cocok dengan spesifikasi JSON.
Untuk informasi selengkapnya tentang mengkueri data JSON, lihat data JSON di SQL Server.
Sintaksis sampel
Sintaks penggunaan untuk jenis json mirip dengan semua jenis data SQL Server lainnya dalam tabel.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
Jenis data json dapat digunakan dalam definisi kolom yang CREATE TABLE terkandung dalam pernyataan. Contohnya:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Batasan dapat ditentukan sebagai bagian dari definisi kolom. Contohnya:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Ketersediaan fitur
Dukungan fungsi JSON pertama kali diperkenalkan di SQL Server 2016 (13.x). Jenis json asli diperkenalkan di Azure SQL Database dan Azure SQL Managed Instance, dan juga tersedia di SQL Server 2025 (17.x).
Jenis data json tersedia di bawah semua tingkat kompatibilitas database.
Note
- umumnya tersedia untuk Azure SQL Database dan Azure SQL Managed Instance dengan kebijakan pembaruanSQL Server 2025 atau Always-up-to-date.
- dalam pratinjau untuk SQL Server 2025 (17.x) dan database SQL di Fabric.
Metode modifikasi
Note
Metode ini modify saat ini dalam pratinjau dan hanya tersedia di SQL Server 2025 (17.x).
Jenis data json mendukung metode .modify Gunakan modify untuk mengubah dokumen JSON yang disimpan dalam kolom. Metode modify ini memiliki pengoptimalan untuk melakukan modifikasi di tempat pada data jika memungkinkan, dan merupakan cara yang lebih disukai untuk memodifikasi dokumen JSON dalam kolom json .
Untuk string JSON, jika nilai baru kurang dari atau sama dengan nilai yang ada, modifikasi di tempat dimungkinkan.
Untuk angka JSON, jika nilai baru memiliki jenis yang sama, atau dalam rentang nilai yang ada, modifikasi di tempat dimungkinkan.
DROP TABLE IF EXISTS JsonTable;
CREATE TABLE JsonTable
(
id INT PRIMARY KEY,
d JSON
);
INSERT INTO JsonTable (id, d)
VALUES (1, '{"a":1, "b":"abc", "c":true}');
UPDATE JsonTable
SET d.modify('$.a', 14859)
WHERE id = 1;
UPDATE JsonTable
SET d.modify('$.b', 'def')
WHERE id = 1;
Dukungan fungsi
Semua fungsi JSON mendukung jenis data json tanpa perubahan kode atau perbedaan penggunaan yang diperlukan.
-
OPENJSONsaat ini tidak mendukung jenis data json di beberapa platform. Untuk informasi selengkapnya, lihat Batasan.
Untuk daftar lengkap fungsi JSON, lihat Fungsi JSON.
Indexes
Tidak ada jenis indeks khusus untuk data JSON.
Jenis json tidak dapat digunakan sebagai kolom kunci dalam CREATE INDEX pernyataan. Namun, kolom json dapat ditentukan sebagai kolom yang disertakan dalam definisi indeks. Selain itu, kolom json dapat muncul dalam klausa indeks yang difilter WHERE .
Conversion
Konversi eksplisit menggunakan CAST atau CONVERT dari jenis json dapat dilakukan ke jenis char, nchar, varchar, dan nvarchar . Semua konversi implisit tidak diizinkan, mirip dengan perilaku xml. Demikian pula, hanya char, nchar, varchar, dan nvarchar yang dapat dikonversi secara eksplisit ke jenis data json .
Jenis data json tidak dapat digunakan dengan jenis sql_variant atau ditetapkan ke variabel atau kolom sql_variant . Pembatasan ini mirip dengan varchar(max), varbinary(max), nvarchar(max), xml, dan jenis data berbasis CLR.
Anda dapat mengonversi kolom yang ada seperti varchar(max) ke json menggunakan ALTER TABLE. Mirip dengan jenis data xml , Anda tidak dapat mengonversi kolom json ke salah satu string atau jenis biner menggunakan ALTER TABLE.
Untuk informasi selengkapnya, lihat Konversi jenis data (Mesin Database).
Compatibility
Jenis data json dapat digunakan sebagai parameter atau jenis pengembalian dalam fungsi yang ditentukan pengguna, atau parameter prosedur tersimpan. Jenis json kompatibel dengan pemicu dan tampilan.
Saat ini, format asli alat bcp berisi dokumen json sebagai varchar atau nvarchar. Anda harus menentukan file format untuk menunjuk kolom json .
Pembuatan jenis alias yang menggunakan CREATE TYPE untuk jenis data json tidak diizinkan. Perilaku ini sama dengan jenis data xml .
Menggunakan SELECT ... INTO dengan jenis data json membuat tabel dengan jenis json .
Limitations
Perilaku mengembalikan jenis data CAST ( ... AS JSON), tetapi prosedur tersimpan sistem sp_describe_first_result_set tidak mengembalikan jenis data json dengan benar. Oleh karena itu, banyak klien dan driver akses data melihat jenis data varchar atau nvarchar .
- Saat ini, TDS >= 7.4 (dengan UTF-8) melihat varchar(max) dengan
Latin_General_100_bin2_utf8. - Saat ini, TDS < 7.4 melihat nvarchar(maks) dengan kolate database.
Saat ini, OPENJSON() fungsi tidak menerima jenis data json di beberapa platform. Saat ini, ini adalah konversi implisit. Konversikan secara eksplisit ke nvarchar(maks) terlebih dahulu.
- Di SQL Server 2025 (17.x), fungsi ini
OPENJSON()mendukung json. Untuk informasi selengkapnya, lihat Kemampuan JSON utama di SQL Server 2025.
Batasan ukuran
Batas ukuran data JSON dalam penyimpanan:
| Bidang | Batasan |
|---|---|
| Ukuran jenis data JSON (biner) | Hingga 2GB |
| Jumlah kunci unik | Hingga 32K |
| Per ukuran string kunci | 7998 byte |
| Ukuran nilai per string | byte 536870911 |
| Jumlah properti dalam satu objek | Hingga 65535 |
| Jumlah elemen dalam satu array | Hingga 65535 |
| Jumlah tingkat berlapis dalam dokumen JSON | 128 |