Hvis du bruger en T-SQL-funktion såsom OPENJSON()
, JSON_QUERY()
, eller JSON_VALUE()
, kan du være på vagt over for ikke-alfanumeriske tegn, der kan være i det JSON-dokument, du arbejder med. Især hvis disse specialtegn er i nøglenavnene, og du skal henvise til disse nøglenavne.
For eksempel kan du have et nøglenavn, der indeholder et mellemrum (såsom "first name"
), eller et dollartegn ($
).
Heldigvis, hver gang du refererer til sådanne nøgler, kan du blot omgive nøglenavnet med dobbelte anførselstegn.
Eksempel 1 – OPENJSON()
Her er et eksempel på henvisning til en nøgle med et mellemrum i navnet, når du bruger OPENJSON()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"');
Resultat:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Her er endnu et eksempel, denne gang har vi et dollartegn i nøglenavnet.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');
Resultat:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Eksempel 2 – JSON_QUERY()
Her er et eksempel, der bruger JSON_QUERY()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_QUERY(@json, '$."contact details"');
Resultat:
+--------------------+ | (No column name) | |--------------------| | { "client id" : 1, "work phone" : "+61 987 902 029" } | +--------------------+
Og her er det med et dollartegn.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"');
Resultat:
+--------------------+ | (No column name) | |--------------------| | { "normal rate" : 80, "overtime" : 160 } | +--------------------+
Eksempel 3 – JSON_VALUE()
Dette eksempel bruger JSON_VALUE()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_VALUE(@json, '$."contact details"."work phone"');
Resultat:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
Og her er det med et dollartegn.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];
Resultat:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+