Se você estiver usando uma função T-SQL como
OPENJSON()
, JSON_QUERY()
, ou JSON_VALUE()
, você pode ter cuidado com quaisquer caracteres não alfanuméricos que possam estar no documento JSON com o qual está trabalhando. Especialmente se esses caracteres especiais estiverem nos nomes de chave e você precisar fazer referência a esses nomes de chave. Por exemplo, você pode ter um nome de chave que contenha um espaço (como
"first name"
), ou um cifrão ($
). Felizmente, sempre que você referenciar essas chaves, você pode simplesmente colocar o nome da chave entre aspas duplas.
Exemplo 1 – OPENJSON()
Aqui está um exemplo de referência a uma chave com um espaço em seu nome ao usar
OPENJSON()
. DECLARE @json NVARCHAR(4000) = N'{
"contact details" : {
"client id" : 1,
"work phone" : "+61 987 902 029"
}
}';
SELECT * FROM OPENJSON(@json, '$."contact details"');
Resultado:
+------------+-----------------+--------+ | key | value | type | |------------+-----------------+--------| | client id | 1 | 2 | | work phone | +61 987 902 029 | 1 | +------------+-----------------+--------+
Aqui está outro exemplo, desta vez temos um cifrão no nome da chave.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');
Resultado:
+-------------+---------+--------+ | key | value | type | |-------------+---------+--------| | normal rate | 80 | 2 | | overtime | 160 | 2 | +-------------+---------+--------+
Exemplo 2 – JSON_QUERY()
Aqui está um exemplo 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"');
Resultado:
+--------------------+ | (No column name) | |--------------------| | { "client id" : 1, "work phone" : "+61 987 902 029" } | +--------------------+
E aqui está com um cifrão.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_QUERY(@json, '$."$ per hour"');
Resultado:
+--------------------+ | (No column name) | |--------------------| | { "normal rate" : 80, "overtime" : 160 } | +--------------------+
Exemplo 3 – JSON_VALUE()
Este exemplo usa
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"');
Resultado:
+--------------------+ | (No column name) | |--------------------| | +61 987 902 029 | +--------------------+
E aqui está com um cifrão.
DECLARE @json NVARCHAR(4000) = N'{
"$ per hour" : {
"normal rate" : 80,
"overtime" : 160
}
}';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];
Resultado:
+---------------+ | Normal Rate | |---------------| | 80 | +---------------+