Aracılığıyla paylaş


JSON veri türü

Şunlar için geçerlidir: SQL Server 2025 (17.x) Microsoft Fabric'teAzure 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

JSON veri türü:

  • , 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.

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