Datový typ JSON (Preview)
platí pro:azure SQL Databaseazure SQL Managed Instance
Nový nativní json datový typ, který 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 v 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
json typ 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í typu 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)]
Typ json
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 představen v roce 2024 ve službě Azure SQL Database a spravované instanci Azure SQL.
json je k dispozici ve všech úrovních kompatibility databáze.
Poznámka
Datový typ JSON je aktuálně ve verzi Preview pro Azure SQL Database a službu Azure SQL Managed Instance (nakonfigurované s Always –up-to–datemzásad aktualizace).
Podpora funkcí
Všechny funkce JSON podporují typ json bez nutnosti změn kódu nebo rozdílu použití.
Úplný seznam funkcí JSON najdete v tématu funkce JSON.
Indexy
Pro data JSON neexistují žádné speciální typy indexů.
json typ nelze použít jako klíčový sloupec v příkazu CREATE INDEX
. Sloupec json je však možné zadat jako zahrnutý sloupec v definici indexu. Kromě toho se sloupec json
Přeměna
Explicitní převod pomocí CAST
nebo CONVERT
z typu json je možné provést char, nchar, varchara nvarchar typy. Všechny implicitní převody nejsou povoleny, podobně jako chování xml. Podobně lze explicitně převést pouze
typu json nelze použít s typem sql_variant nebo přiřazeným sql_variant proměnné nebo sloupci. Toto omezení podobné varchar(max), varbinary(max), nvarchar(max), xmla datové typy založené na CLR.
Existující sloupce můžete převést, například varchar(max) sloupec na json pomocí ALTER TABLE
. Podobně jako xml datový typ nelze pomocí převést sloupec ALTER TABLE
na libovolný řetězec nebo binární typy .
Další informace naleznete v tématu Převod datového typu.
Kompatibilita
Typ json lze použít jako parametr nebo návratový typ v uživatelem definované funkci nebo parametr uložené procedury. Typ json
V současné době nativní formát nástroje nástroje
Vytvoření typu aliasu pomocí
Použití SELECT ... INTO
s typem JSON vytvoří tabulku s typem JSON.
Omezení
Chování
vrací typ json , ale uložená procedura systému sp_describe_first_result_set nevrací datový typjson . Mnoho klientů a ovladačů pro přístup k datům proto uvidí datový typ varchar nebo nvarchar.- V současné době TDS >= 7,4 (s UTF-8) uvidí varchar(max) s
Latin_General_100_bin2_utf8
. - V současné době TDS < 7.4 uvidí nvarchar(max) s kolací databáze.
- V současné době TDS >= 7,4 (s UTF-8) uvidí varchar(max) s
V současné době funkce
nepřijímá typ json , aktuálně je to implicitní převod. Explicitně převést na nvarchar(max) nejprve.