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 türü, JSON belgelerini yerel ikili biçimde depolar.
JSON türü, kolay sorgulama ve işleme için iyileştirilmiş JSON belgelerinin yüksek uygunlukta bir depolamasını sağlar ve JSON verilerinin varchar veya nvarchar olarak depolanmasına göre aşağıdaki avantajları sağlar:
- Belge zaten ayrıştırılmış olduğundan daha verimli okumalar
- Sorgu, belgenin tamamına erişmeden tek tek değerleri güncelleştirene kadar daha verimli yazma işlemleri
- Sıkıştırma için iyileştirilmiş daha verimli depolama
- Mevcut kodla uyumlulukta değişiklik yok
Json türü UTF-8 kodlamasını Latin1_General_100_BIN2_UTF8kullanarak verileri dahili olarak depolar. 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 türü, deyiminde CREATE TABLE yer alan sütun tanımında kullanılabilir. Ö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 belirtilebilir. Ö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 işlevi desteği ilk olarak SQL Server 2016'da (13.x) kullanıma sunulmuştur. Yerel json türü Azure SQL Database ve Azure SQL Managed Instance'da tanıtıldı ve SQL Server 2025 (17.x) sürümünde de mevcuttur.
Json veri türü tüm veritabanı uyumluluk düzeyleri altında kullanılabilir.
Note
- , SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesi ile Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği için genel kullanıma sunulmuştur.
- , Yapı'da SQL Server 2025 (17.x) ve SQL veritabanı için önizleme aşamasındadır.
modify yöntemi
Note
Yöntem modify şu anda önizleme aşamasında ve yalnızca SQL Server 2025 (17.x) sürümlerinde mevcuttur.
json veri türü yöntemini desteklermodify. Bir sütunda depolanan JSON belgelerini değiştirmek için kullanın modify . yöntemi, modify mümkün olduğunda verilerde yerinde değişiklikler yapmak için iyileştirmelere sahiptir ve jSON sütunundaki bir JSON belgesini değiştirmenin tercih edilen yoludur.
JSON dizeleri için, yeni değer mevcut değerden küçük veya buna eşitse yerinde değişiklik yapılabilir.
JSON numaraları için, yeni değer aynı türdeyse veya mevcut değerin aralığındaysa yerinde değişiklik yapılabilir.
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;
İşlev desteği
Tüm JSON işlevleri kod değişikliği veya kullanım farkı gerekmeyecek şekilde json veri türünü destekler.
-
OPENJSONşu anda bazı platformlarda json veri türünü desteklemez. Daha fazla bilgi için bkz . Sınırlamalar.
JSON işlevlerinin tam listesi için bkz. JSON işlevleri.
Indexes
JSON verileri için özel dizin türü yoktur.
Json türü bir CREATE INDEX deyimde anahtar sütunu olarak kullanılamaz. Ancak , bir json sütunu dizin tanımında dahil edilen sütun olarak belirtilebilir. Ayrıca, filtrelenmiş dizinin yan tümcesinde bir WHERE sütunu görüntülenebilir.
Conversion
json türü kullanılarak CAST veya CONVERTjson türünden açıkça dönüştürme char, nchar, varchar ve nvarchar türlerine yapılabilir.
Xml davranışına benzer şekilde tüm örtük dönüştürmelere izin verilmez. Benzer şekilde yalnızca char, nchar, varchar ve nvarchar açıkça json veri türüne dönüştürülebilir.
Json veri türü sql_variant türüyle kullanılamaz veya sql_variant değişkenine veya sütununa atanamaz. Varchar(max), varbinary(max), nvarchar(max), xml ve CLR tabanlı veri türlerine benzer bu kısıtlama.
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ı).
Compatibility
Json veri türü, kullanıcı tanımlı bir işlevde veya saklı yordamın parametresinde parametre veya dönüş türü olarak kullanılabilir. Json türü tetikleyiciler ve görünümlerle uyumludur.
Şu anda bcp aracının yerel biçimi json belgesini varchar veya nvarchar olarak içerir. JSON sütunu belirlemek için bir biçim dosyası belirtmeniz gerekir.
CREATE TYPE veri türü için kullanarak diğer ad türü oluşturulmasına izin verilmez. 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
davranışı CAST ( ... AS JSON) bir json veri türü döndürür, ancak sp_describe_first_result_set sistem saklı yordamı json veri türünü doğru şekilde döndürmez. Bu nedenle, birçok veri erişim istemcisi ve sürücüsü varchar veya nvarchar veri türü görür.
- Şu anda TDS >= 7,4 (UTF-8 ile) ile varchar(max) değerini
Latin_General_100_bin2_utf8görür. - TDS < 7.4 şu anda veritabanı harmanlaması ile nvarchar(max) görüyor.
OPENJSON() Şu anda işlev bazı platformlarda json veri türünü kabul etmez. Şu anda örtük bir dönüştürmedir. İlk olarak açıkça nvarchar(max) değerine dönüştürün.
- SQL Server 2025 (17.x)'de bu
OPENJSON()fonksiyon json'u destekliyor. Daha fazla bilgi için bkz. SQL Server 2025'te önemli JSON özellikleri.
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ı | En fazla 32K |
| Anahtar dizesi boyutu başına | 7998 bayt |
| Dize değeri boyutu başına | 536870911 bayt |
| Bir nesnedeki özellik sayısı | 65535'e kadar |
| Bir dizideki öğe sayısı | 65535'e kadar |
| JSON belgesindeki iç içe düzey sayısı | 128 |
İlgili içerik
- JSON belgelerini depolama
- SQL Server'da JSON verilerini