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 2016 (13.x) en latere versies 
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
,Warehouse in Microsoft Fabric
,SQL Database in Microsoft Fabric Preview
De JSON_VALUE syntaxis extraheert een scalaire waarde uit een JSON-tekenreeks.
Zie JSON_QUERY als u een object of matrix uit een JSON-tekenreeks wilt extraheren in plaats van een scalaire waarde. Zie JSON_VALUE voor meer informatie over de verschillen tussen JSON_QUERY en.
              
              
              Transact-SQL syntaxis-conventies
Syntax
JSON_VALUE ( expression , path [ RETURNING data_type ] )
Arguments
expression
Een expressie. Meestal de naam van een variabele of een kolom die JSON-tekst bevat.
Als JSON_VALUE JSON wordt gevonden die niet geldig is in de expressie voordat de waarde wordt gevonden die door het pad wordt geïdentificeerd, retourneert de functie een fout. Als JSON_VALUE de waarde die door het pad wordt geïdentificeerd, niet wordt gevonden, wordt de hele tekst gescand en wordt er een fout geretourneerd als JSON wordt gevonden die nergens in de expressie geldig is.
path
Een JSON-pad waarmee de eigenschap wordt opgegeven die moet worden geëxtraheerd. Zie JSON-padexpressies in de SQL Database Engine voor meer informatie.
In SQL Server 2017 (14.x) en in Azure SQL Database kunt u een variabele opgeven als de waarde van het pad.
Als de indeling van het pad niet geldig is, JSON_VALUE wordt een fout geretourneerd.
data_type
Retourneert de waarde die is opgegeven in het SQL-type. Alleen ondersteund als de invoer een JSON-type is. De ondersteunde SQL-typen zijn: tinyint, smallint, int, bigint, decimal, numeriek, float, real, char, varchar, varchar(max), nchar, nvarchar, nvarchar(max), date, time, datetime2 en datetimeoffset.
Retourwaarde
Als RETURNING dit niet is inbegrepen:
- Retourneert één tekstwaarde van het type nvarchar(4000). De sortering van de geretourneerde waarde is hetzelfde als de sortering van de invoerexpressie. 
- Als de waarde groter is dan 4000 tekens: - Retourneert JSON_VALUEin laxmodusNULL.
- In de strikte modus retourneert JSON_VALUEeen fout.
 - Als u scalaire waarden moet retourneren die groter zijn dan 4000 tekens, gebruikt - OPENJSONu in plaats van- JSON_VALUE. Zie OPENJSON voor meer informatie.
- Retourneert 
Als RETURNING dit is inbegrepen:
Retourneert de waarde die is opgegeven in het SQL-type. De ondersteunde SQL-typen zijn: tinyint, smallint, int, bigint, decimal, numeriek, float, real, char, varchar, varchar(max), nchar, nvarchar, nvarchar(max), date, time, datetime2 en datetimeoffset.
JSON-functies werken hetzelfde, ongeacht of het JSON-document is opgeslagen in varchar, nvarchar of het systeemeigen json-gegevenstype .
Remarks
Lax-modus en strikte modus
Houd rekening met de volgende JSON-tekst:
DECLARE @jsonInfo AS NVARCHAR (MAX);
SET @jsonInfo = N'{
     "info":{
       "type":1,
       "address":{
         "town":"Bristol",
         "county":"Avon",
         "country/region":"England"
       },
       "tags":["Sport", "Water polo"]
    },
    "type":"Basic"
 }';
In de volgende tabel wordt het gedrag van JSON_VALUE in de lax-modus en in de strikte modus vergeleken. Zie JSON-padexpressies in de SQL Database Engine voor meer informatie over de specificatie van de optionele padmodus (lax of strikt).
| Path | Retourwaarde in laxmodus | Retourwaarde in strikte modus | Meer informatie | 
|---|---|---|---|
| $ | NULL | Error | Geen scalaire waarde. Gebruik in plaats daarvan JSON_QUERY. | 
| $.info.type | N'1' | N'1' | N/a | 
| $.info.address.town | N'Bristol' | N'Bristol' | N/a | 
| $.info. adres" | NULL | Error | Geen scalaire waarde. Gebruik in plaats daarvan JSON_QUERY. | 
| $.info.tags | NULL | Error | Geen scalaire waarde. Gebruik in plaats daarvan JSON_QUERY. | 
| $.info.type[0] | NULL | Error | Geen matrix. | 
| $.info.none | NULL | Error | De eigenschap bestaat niet. | 
Examples
Voorbeeld 1
In het volgende voorbeeld worden de waarden van de JSON-eigenschappen town en state in queryresultaten gebruikt. Omdat JSON_VALUE de sortering van de bron behouden blijft, is de sorteervolgorde van de resultaten afhankelijk van de sortering van de jsonInfo kolom.
Note
(In dit voorbeeld wordt ervan uitgegaan dat een tabel met de naam Person.Person een jsonInfo kolom met JSON-tekst bevat en dat deze kolom de structuur heeft die eerder werd weergegeven in de discussie over de laxmodus en strikte modus. In de AdventureWorks voorbeelddatabase bevat jsonInfo de Person tabel geen kolom.)
SELECT FirstName,
       LastName,
       JSON_VALUE(jsonInfo, '$.info.address.town') AS Town
FROM Person.Person
WHERE JSON_VALUE(jsonInfo, '$.info.address.state') LIKE 'US%'
ORDER BY JSON_VALUE(jsonInfo, '$.info.address.town');
Voorbeeld 2
In het volgende voorbeeld wordt de waarde van de JSON-eigenschap town geëxtraheerd in een lokale variabele.
DECLARE @jsonInfo AS NVARCHAR (MAX);
DECLARE @town AS NVARCHAR (32);
SET @jsonInfo = N'{"info":{"address":[{"town":"Paris"},{"town":"London"}]}}';
SET @town = JSON_VALUE(@jsonInfo, '$.info.address[0].town'); -- Paris
SET @town = JSON_VALUE(@jsonInfo, '$.info.address[1].town'); -- London
Voorbeeld 3
In het volgende voorbeeld worden berekende kolommen gemaakt op basis van de waarden van JSON-eigenschappen.
CREATE TABLE dbo.Store
(
    StoreID INT IDENTITY (1, 1) NOT NULL,
    Address VARCHAR (500),
    jsonContent NVARCHAR (4000),
    Longitude AS JSON_VALUE(jsonContent, '$.address[0].longitude'),
    Latitude AS JSON_VALUE(jsonContent, '$.address[0].latitude')
);
Voorbeeld 4
In het volgende voorbeeld wordt een waarde uit de JSON-matrix geëxtraheerd en JSON_VALUE wordt de waarde geretourneerd als een datumtypewaarde.
DECLARE @j AS JSON = '[1, 1.3333, true, "a", "1", "2025-01-01"]';
SELECT JSON_VALUE(@j, '$[5]' RETURNING date) AS date_value;
date_value
--------
2025-01-01
Verwante inhoud
- JSON-padexpressies in de SQL Database Engine
- JSON-gegevens in SQL Server