Se stai usando una funzione T-SQL come OPENJSON()
, JSON_QUERY()
o JSON_VALUE()
, potresti diffidare di eventuali caratteri non alfanumerici che potrebbero trovarsi nel documento JSON con cui stai lavorando. Soprattutto se quei caratteri speciali sono nei nomi delle chiavi e devi fare riferimento a quei nomi delle chiavi.
Ad esempio, potresti avere un nome chiave che contiene uno spazio (come "first name"
) o un simbolo del dollaro ($
).
Fortunatamente, ogni volta che fai riferimento a tali chiavi, puoi semplicemente racchiudere il nome della chiave tra virgolette doppie.
Esempio 1 – OPENJSON()
Ecco un esempio di riferimento a una chiave con uno spazio nel nome quando si utilizza OPENJSON()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"');
Risultato:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Ecco un altro esempio, questa volta abbiamo il simbolo del dollaro nel nome della chiave.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');
Risultato:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Esempio 2 – JSON_QUERY()
Ecco un esempio usando JSON_QUERY()
.
DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT JSON_QUERY(@json, '$."contact details"');
Risultato:
+--------------------+ | (No column name) | |--------------------| | { "client id" : 1, "work phone" : "+61 987 902 029" } | +--------------------+
Ed eccolo qui con il simbolo del dollaro.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"');
Risultato:
+--------------------+ | (No column name) | |--------------------| | { "normal rate" : 80, "overtime" : 160 } | +--------------------+
Esempio 3 – JSON_VALUE()
Questo esempio utilizza 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"');
Risultato:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
Ed eccolo qui con il simbolo del dollaro.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];
Risultato:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+