JSON_QUERY (Transact-SQL)
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Extraheert een object of een matrix uit een JSON-tekenreeks.
Zie JSON_VALUE (Transact-SQL)als u een scalaire waarde wilt extraheren uit een JSON-tekenreeks in plaats van een object of matrix. Zie Vergelijken JSON_VALUE en JSON_QUERYvoor meer informatie over de verschillen tussen JSON_VALUE en JSON_QUERY
.
Transact-SQL syntaxisconventies
Syntaxis
JSON_QUERY ( expression [ , path ] )
Argumenten
expressie
Een expressie. Meestal de naam van een variabele of een kolom die JSON-tekst bevat.
Als JSON_QUERY
JSON vindt die niet geldig is in expressie voordat de waarde wordt gevonden die is geïdentificeerd door pad, retourneert de functie een fout. Als JSON_QUERY
de waarde die wordt geïdentificeerd door padniet vindt, scant deze de hele tekst en retourneert deze een fout als JSON wordt gevonden die nergens in expressiegeldig is.
pad
Een JSON-pad waarmee het object of de matrix wordt opgegeven die moet worden geëxtraheerd.
In SQL Server 2017 (14.x) en in Azure SQL Database kunt u een variabele opgeven als de waarde van pad.
Het JSON-pad kan de lax- of strikte modus voor parseren opgeven. Als u de parseringsmodus niet opgeeft, is de lax-modus de standaardmodus. Zie JSON Path Expressions (SQL Server)voor meer informatie.
De standaardwaarde voor pad is $
. Als u dus geen waarde opgeeft voor pad, retourneert JSON_QUERY
de expressieinvoer.
Als de indeling van pad ongeldig is, retourneert JSON_QUERY
een fout.
Retourwaarde
Retourneert een JSON-fragment van het type nvarchar(max). De sortering van de geretourneerde waarde is hetzelfde als de sortering van de invoerexpressie.
Als de waarde geen object of matrix is:
In de lax-modus retourneert
JSON_QUERY
null.In de strikte modus retourneert
JSON_QUERY
een fout.
Opmerkingen
Lax-modus en strikte modus
Houd rekening met de volgende JSON-tekst:
{
"info": {
"type": 1,
"address": {
"town": "Cheltenham",
"county": "Gloucestershire",
"country": "England"
},
"tags": ["Sport", "Water polo"]
},
"type": "Basic"
}
In de volgende tabel wordt het gedrag van JSON_QUERY
in de lax-modus en in de strikte modus vergeleken. Zie JSON Path Expressions (SQL Server)voor meer informatie over de specificatie van de optionele padmodus (lax of strikt).
Pad | Retourwaarde in laxmodus | Retourwaarde in strikte modus | Meer informatie |
---|---|---|---|
$ |
Retourneert de volledige JSON-tekst. | Retourneert de volledige JSON-tekst. | N.v.t |
$.info.type |
NULL |
Fout | Geen object of matrix. Gebruik in plaats daarvan JSON_VALUE . |
$.info.address.town |
NULL |
Fout | Geen object of matrix. Gebruik in plaats daarvan JSON_VALUE . |
$.info."address" |
N'{ "town":"Cheltenham", "county":"Gloucestershire", "country":"England" }' |
N'{ "town":"Cheltenham", "county":"Gloucestershire", "country":"England" }' |
N.v.t |
$.info.tags |
N'[ "Sport", "Water polo"]' |
N'[ "Sport", "Water polo"]' |
N.v.t |
$.info.type[0] |
NULL |
Fout | Geen matrix. |
$.info.none |
NULL |
Fout | De eigenschap bestaat niet. |
Gebruik JSON_QUERY met FOR JSON
JSON_QUERY
retourneert een geldig JSON-fragment. Als gevolg hiervan escapet FOR JSON
geen speciale tekens in de JSON_QUERY
retourwaarde.
Als u resultaten retourneert met FOR JSON en u gegevens opgeeft die al in JSON-indeling (in een kolom of als resultaat van een expressie) staan, verpakt u de JSON-gegevens met JSON_QUERY
zonder de padparameter.
Voorbeelden
Voorbeeld 1
In het volgende voorbeeld ziet u hoe u een JSON-fragment uit een CustomFields
kolom in queryresultaten kunt retourneren.
SELECT PersonID,FullName,
JSON_QUERY(CustomFields,'$.OtherLanguages') AS Languages
FROM Application.People
Voorbeeld 2
In het volgende voorbeeld ziet u hoe u JSON-fragmenten opneemt in de uitvoer van de FOR JSON-component.
SELECT StockItemID, StockItemName,
JSON_QUERY(Tags) as Tags,
JSON_QUERY(CONCAT('["',ValidFrom,'","',ValidTo,'"]')) ValidityPeriod
FROM Warehouse.StockItems
FOR JSON PATH
Verwante inhoud
- JSON-padexpressies (SQL Server)
- JSON-gegevens in SQL Server