Als u een T-SQL-functie gebruikt, zoals OPENJSON() , JSON_QUERY() , of JSON_VALUE() , bent u mogelijk op uw hoede voor niet-alfanumerieke tekens in het JSON-document waarmee u werkt. Vooral als die speciale tekens in de sleutelnamen staan, en je naar die sleutelnamen moet verwijzen.
U kunt bijvoorbeeld een sleutelnaam hebben die een spatie bevat (zoals "first name" ), of een dollarteken ($ ).
Gelukkig kunt u elke keer dat u naar dergelijke sleutels verwijst, de sleutelnaam eenvoudig tussen dubbele aanhalingstekens plaatsen.
Voorbeeld 1 – OPENJSON()
Hier is een voorbeeld van het verwijzen naar een sleutel met een spatie in de naam bij gebruik van OPENJSON() .
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"'); Resultaat:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Hier is nog een voorbeeld, deze keer hebben we een dollarteken in de sleutelnaam.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"'); Resultaat:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Voorbeeld 2 – JSON_QUERY()
Hier is een voorbeeld met JSON_QUERY() .
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_QUERY(@json, '$."contact details"'); Resultaat:
+--------------------+
| (No column name) |
|--------------------|
| {
"client id" : 1,
"work phone" : "+61 987 902 029"
} |
+--------------------+ En hier is het met een dollarteken.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"'); Resultaat:
+--------------------+
| (No column name) |
|--------------------|
| {
"normal rate" : 80,
"overtime" : 160
} |
+--------------------+ Voorbeeld 3 – JSON_VALUE()
Dit voorbeeld gebruikt 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"'); Resultaat:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
En hier is het met een dollarteken.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate]; Resultaat:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+