Ако използвате T-SQL функция като OPENJSON()
, JSON_QUERY()
или JSON_VALUE()
, може да се предпазите от всякакви небуквени и цифрови знаци, които може да са в JSON документа, с който работите. Особено ако тези специални знаци са в имената на ключовете и трябва да се позовавате на имената на тези ключове.
Например, можете да имате име на ключ, което съдържа интервал (като "first name"
) или знак за долар ($
).
За щастие всеки път, когато препращате към такива ключове, можете просто да заградите името на ключа с двойни кавички.
Пример 1 – OPENJSON()
Ето пример за препращане към ключ с интервал в името му, когато използвате OPENJSON()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"');
Резултат:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Ето още един пример, този път имаме знак за долар в името на ключа.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');
Резултат:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Пример 2 – JSON_QUERY()
Ето пример за използване на JSON_QUERY()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_QUERY(@json, '$."contact details"');
Резултат:
+--------------------+ | (No column name) | |--------------------| | { "client id" : 1, "work phone" : "+61 987 902 029" } | +--------------------+
И ето го със знак за долар.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"');
Резултат:
+--------------------+ | (No column name) | |--------------------| | { "normal rate" : 80, "overtime" : 160 } | +--------------------+
Пример 3 – JSON_VALUE()
Този пример използва 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"');
Резултат:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
И ето го със знак за долар.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];
Резултат:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+