Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) Preview
AzureSQL Database Azure SQL Managed Instance
SQL-database
in Microsoft Fabric Preview
Het json-gegevenstype slaat JSON-documenten op in een systeemeigen binaire indeling.
Het 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 als 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 json-gegevenstype kan worden gebruikt in de kolomdefinitie in een CREATE TABLE instructie. Voorbeeld:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Beperkingen kunnen worden opgegeven als onderdeel van de kolomdefinitie. Voorbeeld:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Beschikbaarheid van functies
JSON-functieondersteuning is voor het eerst geïntroduceerd in SQL Server 2016 (13.x). Het systeemeigen json-type is geïntroduceerd in Azure SQL Database en Azure SQL Managed Instance en is ook beschikbaar in SQL Server 2025 (17.x) Preview.
Het json-gegevenstype is beschikbaar onder alle databasecompatibiliteitsniveaus.
Note
Het JSON-gegevenstype:
- is algemeen beschikbaar voor Azure SQL Database en Azure SQL Managed Instance met het beleid voor SQL Server 2025 of Always-up-to-dateupdate.
- is in preview voor SQL Server 2025 (17.x) Preview en SQL-database in Fabric.
De wijzigingsmethode
Note
De modify methode is momenteel beschikbaar als preview-versie en is alleen beschikbaar in SQL Server 2025 (17.x) Preview.
Het json-gegevenstype ondersteunt de modify methode. Hiermee modify kunt u JSON-documenten wijzigen die zijn opgeslagen in een kolom. De modify methode heeft optimalisaties om waar mogelijk in-place wijzigingen in de gegevens uit te voeren en is de voorkeurswijze om een JSON-document in een json-kolom te wijzigen.
Als voor JSON-tekenreeksen de nieuwe waarde kleiner is dan of gelijk is aan de bestaande waarde, is in-place aanpassing mogelijk.
Als voor JSON-getallen de nieuwe waarde van hetzelfde type is of binnen het bereik van de bestaande waarde, is in-place wijziging mogelijk.
DROP TABLE IF EXISTS JsonTable;
CREATE TABLE JsonTable
(
id INT PRIMARY KEY,
d JSON
);
INSERT INTO JsonTable (id, d)
VALUES (1, '{"a":1, "b":"abc", "c":true}');
UPDATE JsonTable
SET d.modify('$.a', 14859)
WHERE id = 1;
UPDATE JsonTable
SET d.modify('$.b', 'def')
WHERE id = 1;
Functieondersteuning
Alle JSON-functies ondersteunen het JSON-gegevenstype zonder dat er codewijzigingen of gebruiksverschillen nodig zijn.
-
OPENJSONbiedt momenteel geen ondersteuning voor het json-gegevenstype op sommige platforms. Zie Beperkingen voor meer informatie.
Zie JSON-functies voor een volledige lijst met JSON-functies.
Indexes
Er zijn geen speciale indextypen voor JSON-gegevens.
Het json-type 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.
Conversion
Expliciete conversie met CAST of CONVERT van het json-type kan worden uitgevoerd voor char-, nchar-, varchar- en nvarchar-typen . Alle impliciete conversies zijn niet toegestaan, vergelijkbaar met het gedrag van XML. Op dezelfde manier kunnen alleen tekens, nchar, varchar en nvarchar expliciet worden geconverteerd naar het json-gegevenstype .
Het json-gegevenstype 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 varchar(max) 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 Conversie van gegevenstypen (Database Engine) voor meer informatie.
Compatibility
Het json-gegevenstype kan worden gebruikt als parameter of retourtype in een door de gebruiker gedefinieerde functie of de parameter van een opgeslagen procedure. Het json-type is compatibel met triggers en weergaven.
Momenteel bevat de systeemeigen indeling van het bcp-hulpprogramma het json-document als varchar of nvarchar. U moet een indelingsbestand opgeven om een json-kolom aan te wijzen.
Het maken van het aliastype dat wordt gebruikt CREATE TYPE voor het json-gegevenstype is niet toegestaan. Dit gedrag is hetzelfde als het xml-gegevenstype .
Als SELECT ... INTO u het json-gegevenstype gebruikt, wordt er een tabel gemaakt met het json-type .
Limitations
Het gedrag van het retourneren van CAST ( ... AS JSON) een JSON-gegevenstype , maar de sp_describe_first_result_set opgeslagen procedure retourneert het JSON-gegevenstype niet correct. 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.
Op dit moment accepteert de OPENJSON() functie het json-gegevenstype op sommige platforms niet. Momenteel is het een impliciete conversie. Converteer expliciet eerst naar nvarchar(max).
- In SQL Server 2025 (17.x) Preview ondersteunt de
OPENJSON()functie json. Zie De belangrijkste JSON-mogelijkheden in SQL Server 2025 voor meer informatie.
Verwante inhoud
- JSON-documenten opslaan
- JSON-gegevens in SQL Server