Typ danych JSON (wersja zapoznawcza)
Dotyczy:azure SQL Databaseazure SQL Managed Instance
Nowy natywny json typ danych, który przechowuje dokumenty JSON w natywnym formacie binarnym.
Typ json zapewnia wysokiej wierności magazyn dokumentów JSON zoptymalizowany pod kątem łatwego wykonywania zapytań i manipulowania nimi oraz zapewnia następujące korzyści wynikające z przechowywania danych JSON w varchar lub nvarchar:
- Wydajniejsze operacje odczytu, ponieważ dokument jest już analizowany
- Wydajniejsze zapisy, ponieważ zapytanie może aktualizować poszczególne wartości bez uzyskiwania dostępu do całego dokumentu
- Wydajniejszy magazyn zoptymalizowany pod kątem kompresji
- Brak zmian w zgodności z istniejącym kodem
Typ json wewnętrznie przechowuje dane przy użyciu kodowania UTF-8, Latin1_General_100_BIN2_UTF8
. To zachowanie jest zgodne ze specyfikacją JSON.
Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących danych JSON, zobacz dane JSON w programie SQL Server.
Przykładowa składnia
Składnia użycia dla typu
column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]
Typ
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);
Ograniczenia można określić jako część definicji kolumny, na przykład:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1
);
Dostępność funkcji
Obsługa funkcji JSON została po raz pierwszy wprowadzona w programie SQL Server 2016 (13.x). Natywny typ json został wprowadzony w 2024 r. w usługach Azure SQL Database i Azure SQL Managed Instance.
json jest dostępna na wszystkich poziomach zgodności bazy danych.
Nuta
Typ danych JSON
Obsługa funkcji
Wszystkie funkcje JSON obsługują typ json bez zmian kodu ani różnicy użycia.
Aby uzyskać pełną listę funkcji JSON, zobacz funkcje JSON.
Indeksy
Brak specjalnych typów indeksów dla danych JSON.
Nie można użyć typu
Konwersja
Jawna konwersja przy użyciu
Nie można użyć typu
Istniejące kolumny, takie jak varchar(max) kolumny, można przekonwertować na json przy użyciu ALTER TABLE
. Podobnie jak typ danych xml
Aby uzyskać więcej informacji, zobacz konwersji typu danych.
Zgodność
Typ json może być używany jako parametr lub zwracany typ w funkcji zdefiniowanej przez użytkownika lub parametr procedury składowanej. Typ json
Obecnie natywny format narzędzia
Tworzenie typu aliasu przy użyciu CREATE TYPE
dla typu json nie jest dozwolone. Jest to takie samo zachowanie jak typ xml
Użycie SELECT ... INTO
z typem JSON tworzy tabelę z typem JSON.
Ograniczenia
Zachowanie
zwraca typ json , ale procedura składowana systemu sp_describe_first_result_set nie zwracatypu danych json . W związku z tym wielu klientów i sterowników dostępu do danych zobaczy varchar lub nvarchar typu danych.- Obecnie >TDS = 7.4 (z utF-8) widzi varchar(max) z
Latin_General_100_bin2_utf8
. - Obecnie usługa TDS < 7.4 widzi nvarchar(max) z sortowaniem bazy danych.
- Obecnie >TDS = 7.4 (z utF-8) widzi varchar(max) z
Obecnie funkcja
OPENJSON()
nie akceptuje typu json, który jest obecnie niejawną konwersją. Jawnie przekonwertuj nvarchar(max).