Jenis data JSON (pratinjau)
Berlaku untuk: Azure SQL Database
Jenis data json asli baru yang menyimpan dokumen JSON dalam format biner asli.
Jenis json menyediakan penyimpanan keakuratan tinggi dokumen JSON yang dioptimalkan untuk kueri dan manipulasi yang mudah, dan memberikan manfaat berikut daripada menyimpan data JSON dalam 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 Bekerja dengan 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 json dapat digunakan dalam definisi kolom yang CREATE TABLE
terkandung dalam pernyataan, misalnya:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);
Batasan dapat ditentukan sebagai bagian dari definisi kolom, misalnya:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1
);
Ketersediaan fitur
Dukungan JSON pertama kali diperkenalkan di SQL Server 2016 (13.x), sebagian besar dalam bentuk fungsi JSON. Jenis json asli baru diperkenalkan pada tahun 2024, pertama pada platform Azure SQL.
json tersedia di bawah semua tingkat kompatibilitas database.
Catatan
Saat ini, jenis json tersedia dalam pratinjau di Azure SQL Database.
Dukungan fungsi
Semua fungsi JSON mendukung jenis json tanpa perubahan kode atau perbedaan penggunaan yang diperlukan.
Untuk daftar lengkap fungsi JSON, lihat Fungsi JSON.
Indeks
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
.
Konversi
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 json .
Jenis 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.
Untuk informasi selengkapnya, lihat Konversi jenis data.
Kompatibilitas
Jenis 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 tipe data json .
Pembuatan jenis alias yang menggunakan CREATE TYPE
untuk jenis json tidak diizinkan. Ini adalah perilaku yang sama dengan jenis xml .
Menggunakan SELECT ... INTO
dengan jenis JSON akan membuat tabel dengan jenis JSON.
Batasan
Perilaku mengembalikan jenis json, tetapi prosedur tersimpan
CAST ( ... AS JSON)
sistem sp_describe_first_result_set tidak benar mengembalikan jenis data json. Oleh karena itu, banyak klien dan driver akses data akan melihat jenis data varchar atau nvarchar .- Saat ini, dukungan TDS >= 7.4 (dengan UTF-8) akan melihat varchar(max) dengan
Latin_General_100_bin2_utf8
. - Saat ini, dukungan TDS < 7.4 akan melihat nvarchar(maks) dengan kolate database.
- Saat ini, dukungan TDS >= 7.4 (dengan UTF-8) akan melihat varchar(max) dengan
Saat ini,
OPENJSON()
fungsi tidak menerima jenis json , saat ini yang merupakan konversi implisit. Konversikan secara eksplisit ke nvarchar(maks) terlebih dahulu.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk