Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
Microsoft Fabric'te
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği SQL veritabanı
json veri tipi, JSON belgelerini ikili formatta saklar.
JSON türü, sorgulama ve manipülasyon için optimize edilmiş yüksek kaliteli JSON belgeleri depolama sağlar. JSON verilerini varchar veya nvarchar olarak depolamaya göre aşağıdaki avantajları sunar:
- Daha verimli okumalar, çünkü belge zaten çözümlenmiş durumda.
- Daha verimli yazımlar sağlar, çünkü sorgu tüm belgeye erişmeden bireysel değerleri güncelleyebilir.
- Daha verimli depolama ve sıkıştırma için optimize edildi.
- Mevcut kodla uyumlulukta değişiklik yok.
json türü, UTF-8 kodlaması (Latin1_General_100_BIN2_UTF8). kullanılarak dizeleri dahili olarak saklar. Diğer veri türleri ise yerel veri tipleri olarak depolanır. Bu davranış JSON belirtimi ile eşleşir.
JSON verilerini sorgulama hakkında daha fazla bilgi için bkz. SQL ServerJSON verilerini
Örnek söz dizimi
Json türünün kullanım söz dizimi, tablodaki diğer tüm SQL Server veri türlerine benzer.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
Json veri tipini, bir CREATE TABLE ifadede yer alan bir sütun tanımında kullanın. Örneğin:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Kısıtlamaları sütun tanımının bir parçası olarak belirtin. Örneğin:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Özellik kullanılabilirliği
JSON fonksiyonları desteği SQL Server 2016 (13.x)'de tanıtıldı. Yerleşik json veri tipi Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server 2025 (17.x) içinde mevcuttur.
SQL Server 2025 (17.x)'te JSON desteği hakkında daha fazla bilgi için SQL Server 2025'te Key JSON yeteneklerine bakınız.
Json veri türü tüm veritabanı uyumluluk düzeyleri altında kullanılabilir.
Note
JSON veri tipi ve JSON indeksleri genellikle SQL Server 2025 (17.x), Azure SQL Veritabanı, Azure SQL Yönetilen Örneği (SQL Server 2025 veya her zamanup-totarihgüncelleme politikası ile ve SQL veritabanı içinde mevcuttur Microsoft Fabric.
modify yöntemi
json veri türü yöntemini desteklermodify. Bir sütunda saklanan JSON belgelerini değiştirmek için kullanılır modify . Yöntem, modify mümkün olduğunda verilerde yerinde değişiklikler yapan optimizasyonları içerir. JSON belgesini bir json sütununda değiştirmek için tercih edilen yöntemdir.
JSON dizileri için, yeni değer mevcut değerden aynı uzunlukta veya daha kısa, yöntem veriyi değiştirebilir.
JSON numaraları için, yeni değer aynı türdeyse veya mevcut değerin aralığına uyuyorsa, yöntem mevcut veriyi değiştirebilir.
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;
Geçerli veriler
JSON veri türüne giriş bir JSON nesnesi veya JSON dizisi olmalıdır. Skalarlar, booleanlar ve NULL değerler desteklenmiyor. JSON veri türü, yalnızca JSON nesnesine veya dizisine izin veren IETF RFC 4627'ye uygundur.
ISJSON fonksiyonunu kullanarak bir dizinin geçerli JSON içerip içermediğini test edin. Tip kısıtlaması olmadan, ISJSON en üst seviyede yalnızca JSON nesnesi veya diziyi kabul eder, json veri tipiyle aynı. Tür kısıtlaması, VALUE IETF RFC 8259'un izin verdiği gibi, bir skaler dahil, en üst seviyedeki herhangi bir JSON değerini kabul eder. , ARRAYOBJECT, ve SCALAR tür kısıtlamaları yalnızca o tipi kabul eder.
Örneğin:
DECLARE @true AS JSON = 'true'; -- invalid
DECLARE @false AS JSON = 'false'; -- invalid
DECLARE @number AS JSON = '1234.56'; -- invalid
DECLARE @string AS JSON = '"contoso"'; -- invalid
DECLARE @null AS JSON = 'null'; -- invalid
DECLARE @null AS JSON = NULL; -- valid
DECLARE @object AS JSON = '{}'; -- valid
DECLARE @array AS JSON = '[]'; -- valid
İşlev desteği
Tüm JSON fonksiyonları, kod değişikliği gerektirmeden json veri tipini destekler.
JSON işlevlerinin tam listesi için bkz. JSON işlevleri.
Indexes
Bir json sütunu, bir indeks tanımında dahil edilen bir sütun olabilir veya filtrelenmiş bir indeksin maddesinde görünebilirWHERE.
Bir json sütunu standart bir indekste anahtar sütun olarak kullanılamaz.
Daha fazla bilgi için bkz. CREATE INDEX.
Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, SQL Server 2025 (17.x) ve Microsoft Fabric'teki SQL veritabanında, JSON belgelerindeki değerlere erişen sorguları optimize etmek için bir JSON indeksi oluşturabilirsiniz.
Daha fazla bilgi için bkz. CREATE JSON INDEX.
Conversion
json'danchar, nchar, varchar ve nvarchar'a dönüşüm açıkça yapılmalıdır.
CAST veya CONVERT kullanın.
Char, nchar, varchar, nvarchar ve vector'danjson'a dönüştürme örtük veya açık olabilir. Json'danvektöre dönüşüm örtük veya açık olabilir.
JSON ile diğer tüm veri türleri arasında dönüştürme yasak.
JSON'a dönüştürdüğünüz bir değer, JSON nesnesi veya JSON dizisi olmalıdır. Bir JSON skalerleri, örneğin 1, "abc", true, , veya null, 13609 hatası oluşturur. Boş bir dizi ayrıca 13609 hatasına neden olur. Bir nesnenin tekrarlanan anahtarları varsa, json ilk değeri tutar ve diğer değerleri atar. Hata oluşmaz.
JSON'dan bir dizi türüne dönüştürme, JSON metnini önemsiz boşluk olmadan döndürür. Hedef uzunluğu JSON metni için çok kısa, 13639 hatası meydana gelir. Değer kesilmez.
Json veri türü sql_variant türüyle kullanılamaz veya sql_variant değişkenine veya sütununa atanamaz. Bu kısıtlama, varchar(max),varbinary(max),nvarchar(max), xml ve CLR tabanlı veri tiplerine benzer.
kullanarak varchar(max) gibi mevcut sütunları ALTER TABLE dönüştürebilirsiniz.
Xml veri türüne benzer şekilde, kullanarak ALTER TABLE sütununu dize veya ikili türlerden herhangi birine dönüştüremezsiniz.
Daha fazla bilgi için bkz. Veri türü dönüştürme (Veritabanı Altyapısı).
Sayısal hassasiyet
Char, nchar, varchar veya nvarchar'danjson'a dönüştürdüğünüzde, JSON numarası içeren JSON metni sayı formatına göre yuvarlanabilir.
Hassasiyeti korumak istiyorsanız, JSON sayısını ondalık değer olarak belirtin. Benzer şekilde, JSON belgesinin metin temsilini korumanız gerekiyorsa, JSON belgesini bir karakter dizisi veri tipi olarak depolayın.
Compatibility
JSON veri tipini kullanıcı tanımlı bir fonksiyonda parametre veya dönüş tipi olarak veya depolanmış bir prosedürün parametresi olarak kullanabilirsiniz. Json türü tetikleyiciler ve görünümlerle uyumludur.
Şu anda, bcp aracının yerel formatı json verilerini varchar veya nvarchar olarak temsil etmektedir. JSON sütunu belirlemek için bir biçim dosyası belirtmeniz gerekir.
Json veri tipi için bir alias tipi oluşturamazsınız.CREATE TYPE Bu davranış , xml veri türüyle aynıdır.
SELECT ... INTO json veri türüyle kullanmak, json türüne sahip bir tablo oluşturur.
Limitations
CAST ve CONVERT beklendiği gibi json veri tipini döndürün.
Sürücü sınırlamaları
sp_describe_first_result_set sistem kayıtlı prosedür, sürücü TDS özellik uzantısını destekliyorsa JSONSUPPORTjson veri tipini doğru şekilde döndürür. Bu uzantını desteklemeyen sürücüler varchar veya nvarchar gibi adresleri tercih eder.
SqlClient (>= 6.0) ve JDBC (>= 13.2.0) .JSONSUPPORT Örneğin, SQL Server Management Studio'nun (SSMS) en son sürümü en son SqlClient sürücüsünü kullanır ve sonuç kümesi metaverisindeki json tipini doğru şekilde bildirir.
- Olmadan
JSONSUPPORT, TDS >= 7.4 (UTF-8 ile) varchar(max) ileLatin1_General_100_BIN2_UTF8bildirir. - Olmadan
JSONSUPPORT, TDS < 7.4 veritabanı derlemesiyle nvarchar(max) rapor eder.
Boyut sınırlamaları
Depolamadaki JSON verilerinin boyut sınırları:
| Veri Alanı | Sınırlama |
|---|---|
| JSON veri türü boyutu (ikili) | 2 GB'a kadar |
| Benzersiz anahtar sayısı | 32.000'e kadar |
| Anahtar dizesi boyutu başına | 7.998 bayt |
| Dize değeri boyutu başına | 536.870.911 bayt |
| Bir nesnedeki özellik sayısı | 65.535'e kadar |
| Bir dizideki öğe sayısı | 65.535'e kadar |
| JSON belgesindeki iç içe düzey sayısı | 128 |
İlgili içerik
- JSON belgelerini depolama
- SQL Server'da JSON verilerini