JSON-gegevenstype (preview)
van toepassing op:Azure SQL DatabaseAzure SQL Managed Instance-
Het nieuwe systeemeigen json gegevenstype waarmee JSON-documenten in een systeemeigen binaire indeling worden opgeslagen.
De json type biedt een hoogwaardige opslag van JSON-documenten die zijn geoptimaliseerd voor eenvoudige query's en manipulatie en biedt de volgende voordelen ten opzichte van het opslaan van JSON-gegevens in varchar- of nvarchar-:
- Efficiëntere leesbewerkingen, omdat het document al wordt geparseerd
- Efficiëntere schrijfbewerkingen, omdat de query afzonderlijke waarden kan bijwerken zonder het hele document te openen
- Efficiëntere opslag, geoptimaliseerd voor compressie
- Geen wijziging in compatibiliteit met bestaande code
Het json- type slaat gegevens intern op met behulp van UTF-8-codering, Latin1_General_100_BIN2_UTF8
. Dit gedrag komt overeen met de JSON-specificatie.
Zie JSON-gegevens in SQL Servervoor meer informatie over het uitvoeren van query's op JSON-gegevens.
Voorbeeldsyntaxis
De gebruiksyntaxis voor het json- type is vergelijkbaar met alle andere SQL Server-gegevenstypen in een tabel.
column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]
Het type json- kan worden gebruikt in de kolomdefinitie in een CREATE TABLE
-instructie, bijvoorbeeld:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);
Beperkingen kunnen worden opgegeven als onderdeel van de kolomdefinitie, bijvoorbeeld:
CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1
);
Beschikbaarheid van functies
JSON-ondersteuning is voor het eerst geïntroduceerd in SQL Server 2016 (13.x), voornamelijk in de vorm van JSON-functies. Het nieuwe systeemeigen json type is geïntroduceerd in 2024, eerst op Azure SQL-platformen.
json- is beschikbaar onder alle databasecompatibiliteitsniveaus.
Notitie
Het JSON-gegevenstype is momenteel in preview voor Azure SQL Database en Azure SQL Managed Instance (geconfigureerd met de Always-up-to-date updatebeleid).
Functieondersteuning
Alle JSON-functies ondersteunen het json- type zonder dat er codewijzigingen of gebruiksverschillen nodig zijn.
Zie JSON-functiesvoor een volledige lijst met JSON-functies.
Indexen
Er zijn geen speciale indextypen voor JSON-gegevens.
Het type json kan niet worden gebruikt als sleutelkolom in een CREATE INDEX
-instructie. Een json- kolom kan echter worden opgegeven als een opgenomen kolom in een indexdefinitie. Daarnaast kan een json- kolom worden weergegeven in de WHERE
component van een gefilterde index.
Conversie
Expliciete conversie met behulp van
Het json-type kan niet worden gebruikt met het sql_variant type of toegewezen aan een sql_variant variabele of kolom. Deze beperking is vergelijkbaar met varchar(max), varbinary(max), nvarchar(max), xml-en clr-gegevenstypen.
U kunt bestaande kolommen, zoals een varchar(max) kolom, converteren naar json- met behulp van ALTER TABLE
. Net als bij het xml- gegevenstype kunt u een json- kolom niet converteren naar een van de tekenreeks- of binaire typen met behulp van ALTER TABLE
.
Zie Gegevenstypeconversievoor meer informatie.
Compatibiliteit
Het json- type kan worden gebruikt als parameter of retourtype in een door de gebruiker gedefinieerde functie of de parameter van een opgeslagen procedure. Het type json is compatibel met triggers en weergaven.
Momenteel bevat de systeemeigen indeling van de bcp het json--document als varchar of nvarchar. U moet een indelingsbestand opgeven om een json- gegevenstypekolom aan te wijzen.
Het maken van aliastype met CREATE TYPE
voor het json--type is niet toegestaan. Dit is hetzelfde gedrag als xml- type.
Als u SELECT ... INTO
gebruikt met het JSON-type, maakt u een tabel met het JSON-type.
Beperkingen
Het gedrag van
CAST ( ... AS JSON)
retourneert een json-type, maar de opgeslagen procedure van het sp_describe_first_result_set systeem retourneert het json- gegevenstype niet. Daarom zien veel clients en stuurprogramma's voor gegevenstoegang een varchar- of nvarchar gegevenstype.- Momenteel ziet TDS >= 7,4 (met UTF-8) varchar(max) met
Latin_General_100_bin2_utf8
. - Momenteel ziet TDS < 7.4 nvarchar(max) met databasesortering.
- Momenteel ziet TDS >= 7,4 (met UTF-8) varchar(max) met
Op dit moment accepteert de
OPENJSON()
functie het type json-, momenteel een impliciete conversie. Converteer expliciet naar nvarchar(max) eerst.
Verwante inhoud
- JSON-documenten opslaan
- JSON-gegevens in SQL Server