JSON-adattípus (előzetes verzió)
A következőkre vonatkozik:Azure SQL Database
Felügyelt Azure SQL-példány
Az új natív json adattípus, amely natív bináris formátumban tárolja a JSON-dokumentumokat.
A json típus a JSON-dokumentumok magas szintű, egyszerű lekérdezésre és manipulációra optimalizált tárolását biztosítja, és az alábbi előnyöket nyújtja a JSON-adatok varchar vagy nvarchartárolásához:
- Hatékonyabb olvasás, mivel a dokumentum már elemzésre került
- Hatékonyabb írás, mivel a lekérdezés a teljes dokumentum elérése nélkül is frissítheti az egyes értékeket
- Hatékonyabb tárolás tömörítésre optimalizálva
- Nincs változás a meglévő kóddal való kompatibilitásban
A json típus belsőleg tárolja az adatokat UTF-8 kódolással, Latin1_General_100_BIN2_UTF8
. Ez a viselkedés megfelel a JSON-specifikációnak.
További információ a JSON-adatok lekérdezéséről: JSON-adatok az SQL Server.
Mintaszintaxis
A json típus használati szintaxisa hasonló a tábla összes többi SQL Server-adattípusához.
column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]
A json típus egy CREATE TABLE
utasításban található oszlopdefinícióban használható, például:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);
A korlátozásokat az oszlopdefiníció részeként lehet megadni, például:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Szolgáltatás rendelkezésre állása
A JSON-függvények támogatása először az SQL Server 2016-ban (13.x) jelent meg. A natív json típust 2024-ben vezették be az Azure SQL Database-ben és a felügyelt Azure SQL-példányban.
json minden adatbázis-kompatibilitási szinten elérhető.
Jegyzet
A JSON-adattípus jelenleg előzetes verzióban érhető el az Azure SQL Database és az Azure SQL Managed Instance esetében, amely az Always-up-to-date frissítési szabályzattalkonfigurálva van. Nem érhető el az SQL Server 2022 frissítési szabályzattalkonfigurált Felügyelt Azure SQL-példányban.
Függvénytámogatás
Minden JSON-függvény támogatja a json típust, és nincs szükség kódmódosításra vagy használati különbségre.
A JSON-függvények teljes listáját JSON-függvényekcímű cikkben találja.
Indexek
A JSON-adatokhoz nincsenek speciális indextípusok.
A json típus nem használható kulcsoszlopként egy CREATE INDEX
utasításban. Egy json oszlop azonban megadható egy indexdefinícióban szereplő oszlopként. Emellett egy json oszlop is megjelenhet a szűrt index WHERE
záradékában.
Konverzió
Az CAST
típusból CONVERT
vagy használatával történő explicit átalakítás elvégezhető karakter, nchar, varcharés nvarchar típushoz. Az összes implicit átalakítás nem engedélyezett, hasonlóan az xml
A json típus nem használható sql_variant típussal, és nem rendelhető hozzá sql_variant változóhoz vagy oszlophoz. Ez a korlátozás hasonló varchar(max), varbinary(max), nvarchar(max), xmlés CLR-alapú adattípusokhoz.
Meglévő oszlopokat, például varchar(max) oszlopot json alakíthat át ALTER TABLE
használatával. Az xml adattípushoz hasonlóan nem konvertálhat json oszlopot a ALTER TABLE
használatával.
További információ: Adattípus-átalakítás.
Kompatibilitás
A json típus használható paraméterként vagy visszatérési típusként egy felhasználó által definiált függvényben vagy egy tárolt eljárás paramétereként. A json típusa kompatibilis az eseményindítókkal és a nézetekkel.
A bcp eszköz natív formátuma jelenleg a json dokumentumot tartalmazza varchar vagy nvarchar. Meg kell adnia egy formátumfájlt egy json adattípus-oszlop kijelöléséhez.
Nem lehet aliastípust létrehozni CREATE TYPE
a json típushoz. Ez ugyanaz a viselkedés, mint xml típusa.
A SELECT ... INTO
JSON-típussal való használatával létrehoz egy JSON-típussal rendelkező táblát.
Korlátozások
A
CAST ( ... AS JSON)
viselkedése egy json típust ad vissza, de a sp_describe_first_result_set rendszer által tárolt eljárás nem helyesen adja vissza a json adattípust. Ezért sok adatelérési ügyfél és illesztőprogram varchar vagy nvarchar adattípust fog látni.- Jelenleg a TDS >= 7,4 (UTF-8)varchar(max)
Latin_General_100_bin2_utf8
. - A TDS < 7.4 jelenleg nvarchar(max) lát adatbázis-rendezéssel.
- Jelenleg a TDS >= 7,4 (UTF-8)varchar(max)
A
OPENJSON()
függvény jelenleg nem fogadja el a json típust, amely jelenleg implicit konverzió. Először explicit módon konvertálja nvarchar(max).
Kapcsolódó tartalom
- JSON-dokumentumok tárolása
- JSON-adatok AZ SQL Server