Jika Anda menggunakan fungsi T-SQL seperti OPENJSON()
, JSON_QUERY()
, atau JSON_VALUE()
, Anda mungkin mewaspadai karakter non-alfanumerik yang mungkin ada dalam dokumen JSON yang sedang Anda kerjakan. Terutama jika karakter khusus tersebut ada dalam nama kunci, dan Anda perlu merujuk nama kunci tersebut.
Misalnya, Anda dapat memiliki nama kunci yang berisi spasi (seperti "first name"
), atau tanda dolar ($
).
Untungnya, setiap kali Anda mereferensikan kunci tersebut, Anda cukup mengapit nama kunci dengan tanda kutip ganda.
Contoh 1 – OPENJSON()
Berikut adalah contoh referensi kunci dengan spasi di namanya saat menggunakan OPENJSON()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"');
Hasil:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Ini contoh lain, kali ini kita memiliki tanda dolar di nama kuncinya.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');
Hasil:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Contoh 2 – JSON_QUERY()
Berikut ini contoh menggunakan JSON_QUERY()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_QUERY(@json, '$."contact details"');
Hasil:
+--------------------+ | (No column name) | |--------------------| | { "client id" : 1, "work phone" : "+61 987 902 029" } | +--------------------+
Dan ini dia dengan tanda dolar.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"');
Hasil:
+--------------------+ | (No column name) | |--------------------| | { "normal rate" : 80, "overtime" : 160 } | +--------------------+
Contoh 3 – JSON_VALUE()
Contoh ini menggunakan 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"');
Hasil:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
Dan ini dia dengan tanda dolar.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];
Hasil:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+