Pelo que entendi, se você selecionar json_value
ou json_query
especificar uma chave ou objeto que não existe em seu documento json, no modo estrito, você receberá um erro. Isso permite, por exemplo, confirmar se a chave foi especificada no documento.
Se um par de valores-chave de exemplo for incluído no documento assim:
"Test":null
... isso, no modo estrito, retornará 'NULL'. Em outras palavras, agora você sabe que a chave está definida no documento e seu valor é nulo.
Agora imagine que seu documento contém:
"Test":"Some string"
E você consulta:
select json_modify(@json, '$.Test', null);
Isso retornará uma string json sem a chave "Test".
Como você define corretamente um valor de chave como nulo, em vez de removê-lo do documento json?
(O exemplo acima pode parecer sem sentido, mas posso imaginar definir um valor como null antes de passar o documento json para a próxima consulta ou sistema e exigir que sua chave "Test" exista no documento.)
De acordo com MS Docs sobre JSON_MODIFY :
Basta adicionar a palavra-chave strict na frente do caminho json, usando o exemplo fornecido pelos documentos:
retorna
db<>fique aqui