Sdílet prostřednictvím


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 lze použít v definici sloupce obsaženém 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 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 může zobrazit v klauzuli filtrovaného indexu.

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 znak, nchar, varchara nvarchar lze explicitně převést na typ json .

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 je kompatibilní s triggery a zobrazeními.

V současné době nativní formát nástroje nástroje bcp obsahuje dokument json jako varchar nebo nvarchar. Je nutné zadat formátovací soubor, který určí sloupec json datového typu.

Vytvoření typu aliasu pomocí pro typ json není povolené. Toto chování je stejné jako typu xml.

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ý typ json. 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ě funkce nepřijímá typ json , aktuálně je to implicitní převod. Explicitně převést na nvarchar(max) nejprve.