Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x)
Azure SQL Database Azure SQL
Managed Instance
SQL Database v Microsoft Fabric
Datový typ JSON ukládá dokumenty JSON v nativním binárním formátu.
Typ JSON poskytuje vysoce věrné úložiště dokumentů JSON optimalizovaných pro snadné dotazování a manipulaci a poskytuje následující výhody při ukládání dat JSON jako varchar nebo nvarchar:
- Efektivnější čtení, protože dokument je již analyzován
- Efektivnější zápisy, protože dotaz může aktualizovat jednotlivé hodnoty bez přístupu k celému dokumentu
- Efektivnější úložiště optimalizované pro kompresi
- Žádná změna kompatibility s existujícím kódem
Typ JSON interně ukládá data pomocí kódování UTF-8, Latin1_General_100_BIN2_UTF8. Toto chování odpovídá specifikaci JSON.
Další informace o dotazování dat JSON najdete v tématu dat JSON v SQL Serveru.
Ukázková syntaxe
Syntaxe použití pro typ JSON je podobná všem ostatním datovým typům SQL Serveru v tabulce.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
Datový typ JSON lze použít v definici sloupce obsaženém CREATE TABLE v příkazu. Například:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Omezení lze zadat jako součást definice sloupce. Například:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Dostupnost funkcí
Podpora funkcí JSON byla poprvé zavedena v SQL Serveru 2016 (13.x). Nativní typ json byl zaveden v Azure SQL Database a Azure SQL Managed Instance a je také dostupný v SQL Server 2025 (17.x).
Datový typ JSON je k dispozici ve všech úrovních kompatibility databáze.
Note
- je obecně dostupná pro Službu Azure SQL Database a Azure SQL Managed Instance pomocí zásad aktualizaceSQL Serveru 2025 nebo Always-up-to-date.
- je ve verzi Preview pro SQL Server 2025 (17.x) a databázi SQL v prostředcích infrastruktury.
Metoda modify
Note
Metoda modify je momentálně v náhledu a dostupná pouze v SQL Server 2025 (17.x).
Datový typ JSON podporuje metodu modify . Slouží modify k úpravě dokumentů JSON uložených ve sloupci. Metoda modify má optimalizace pro provádění místních úprav dat, pokud je to možné, a je upřednostňovaným způsobem úprav dokumentu JSON ve sloupci JSON .
U řetězců JSON platí, že pokud je nová hodnota menší nebo rovna existující hodnotě, je možné provést místní úpravy.
U čísel JSON platí, že pokud je nová hodnota stejného typu nebo v rozsahu existující hodnoty, je možné provést místní úpravy.
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;
Podpora funkcí
Všechny funkce JSON podporují datový typ JSON bez nutnosti změn kódu nebo rozdílu použití.
-
OPENJSONv současné době nepodporuje datový typ JSON na některých platformách. Další informace najdete v tématu Omezení.
Úplný seznam funkcí JSON najdete v tématu Funkce JSON.
Indexes
Pro data JSON neexistují žádné speciální typy indexů.
Typ JSON se nedá použít jako klíčový sloupec v CREATE INDEX příkazu. Sloupec JSON je však možné zadat jako zahrnutý sloupec v definici indexu. Kromě toho se sloupec JSON může zobrazit v WHERE klauzuli filtrovaného indexu.
Conversion
Explicitní převod pomocí CAST typu CONVERT nebo z tohoto typu je možné provést pro typy char, nchar, varchar a nvarchar. Všechny implicitní převody nejsou povoleny, podobně jako chování xml. Podobně lze explicitně převést pouze znak, nchar, varchar a nvarchar na datový typ JSON.
Datový typ JSON nelze použít s sql_variant typem ani přiřazeným sql_variant proměnnou nebo sloupcem. Toto omezení se podobá varchar(max), varbinary(max), nvarchar(max), xml a datovým typům založeným na CLR.
Existující sloupce, jako je varchar(max), můžete převést na json pomocí ALTER TABLE. Podobně jako u datového typu XML nemůžete převést sloupec JSON na žádný z řetězců nebo binárních typů pomocí ALTER TABLE.
Další informace naleznete v tématu Převod datových typů (databázový stroj).
Compatibility
Datový typ JSON lze použít jako parametr nebo návratový typ v uživatelem definované funkci nebo parametr uložené procedury. Typ JSON je kompatibilní s triggery a zobrazeními.
V současné době nativní formát nástroje bcp obsahuje dokument JSON jako varchar nebo nvarchar. K určení sloupce JSON je nutné zadat formátový soubor.
Vytvoření typu aliasu pro CREATE TYPE datový typ JSON není povoleno. Toto chování je stejné jako datový typ XML .
Použití SELECT ... INTO s datovým typem JSON vytvoří tabulku s typem JSON .
Limitations
Chování CAST ( ... AS JSON) vrací datový typ JSON , ale uložená procedura systému sp_describe_first_result_set nevrací správně datový typ JSON . Mnoho klientů a ovladačů pro přístup k datům proto vidí datový typ varchar nebo nvarchar .
- TDS >= 7,4 (s UTF-8) v současné době vidí varchar(max) s
Latin_General_100_bin2_utf8. - TDS < 7.4 v současné době vidí nvarchar(max) s kolací databáze.
OPENJSON() V současné době funkce nepřijímá datový typ JSON v některých platformách. V současné době se jedná o implicitní převod. Nejprve explicitně převést na nvarchar(max).
- V SQL Server 2025 (17.x) funkce
OPENJSON()podporuje json. Další informace najdete v tématu Klíčové funkce JSON v SQL Serveru 2025.
Omezení velikosti
Omezení velikosti dat JSON v úložišti:
| Obor | Omezení |
|---|---|
| Velikost datového typu JSON (binární) | Až 2 GB |
| Počet jedinečných klíčů | Až 32 tisíc |
| Velikost řetězce klíče | 7998 bajtů |
| Velikost hodnoty řetězce | 536870911 bajtů |
| Počet vlastností v jednom objektu | Až 65535 |
| Počet prvků v jednom poli | Až 65535 |
| Počet vnořených úrovní v dokumentu JSON | 128 |