Pokud používáte funkci T-SQL, jako je OPENJSON()
, JSON_QUERY()
nebo JSON_VALUE()
, můžete se mít na pozoru před jakýmikoli nealfanumerickými znaky, které mohou být v dokumentu JSON, se kterým pracujete. Zvláště pokud jsou tyto speciální znaky v názvech klíčů a musíte na tyto názvy klíčů odkazovat.
Můžete mít například název klíče, který obsahuje mezeru (jako "first name"
), nebo znak dolaru ($
).
Naštěstí kdykoli na takové klíče odkazujete, můžete název klíče jednoduše obklopit dvojitými uvozovkami.
Příklad 1 – OPENJSON()
Zde je příklad odkazování na klíč s mezerou v názvu při použití OPENJSON()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"');
Výsledek:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Zde je další příklad, tentokrát máme v názvu klíče znak dolaru.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');
Výsledek:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Příklad 2 – JSON_QUERY()
Zde je příklad použití JSON_QUERY()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_QUERY(@json, '$."contact details"');
Výsledek:
+--------------------+ | (No column name) | |--------------------| | { "client id" : 1, "work phone" : "+61 987 902 029" } | +--------------------+
A tady je to se znakem dolaru.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"');
Výsledek:
+--------------------+ | (No column name) | |--------------------| | { "normal rate" : 80, "overtime" : 160 } | +--------------------+
Příklad 3 – JSON_VALUE()
Tento příklad používá 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"');
Výsledek:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
A tady je to se znakem dolaru.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];
Výsledek:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+