es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna manera de devolver null en JSON_VALUE en lugar de vacío en SQL Server?

Mi código de muestra se parece a esto:

DECLARE @JsonText varchar(MAX) = '{
"Test": ""
}'

<p>DECLARE @Name varchar(MAX) = JSON_VALUE(@JsonText, '$.Test') ;</p>

<p>IF (@Name IS NULL)
BEGIN
SELECT 'Null' AS Result
END
ELSE
BEGIN
SELECT 'Empty' AS Result
END
```</p>

y obtuve una salida:
</code></pre>

<h2>Resultado</h2>

Vacío
```

Mi resultado esperado es Null, he intentado recortar y luego comprobar si la cadena está vacía y luego devolver null está funcionando bien.

IF (@Result = '')
SET @Result = NULL;

Pero estoy buscando otra alternativa si está disponible que devuelva null en lugar de vacío.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una alternativa para regresar null en lugar de vacío en este escenario es utilizar la función COALESCE. Se puede modificar el código original de la siguiente manera:

    DECLARE @JsonText varchar(MAX) = '{ "Test": "" }'
    
    DECLARE @Name varchar(MAX) = JSON_VALUE(@JsonText, '$.Test') ;
    
    SELECT COALESCE(NULLIF(@Name,''), 'Null') AS Result
    

    La función COALESCE regresa la primera expresión no nula de una lista de expresiones separadas por comas. Aquí, se utiliza NULLIF para verificar si @Name es una cadena vacía, y si es así, regresa un valor null. Luego, se pasa el resultado a la función COALESCE, junto con la cadena ‘Null’ como segunda expresión. Si @Name es null, COALESCE regresa ‘Null’. Si @Name es una cadena vacía, NULLIF regresa null, y COALESCE regresa ‘Null’. De lo contrario, COALESCE regresa @Name.

    Este enfoque simplifica el código, sin necesidad de utilizar una declaración IF explicita, y proporciona una manera concisa de manejar los valores null y las cadenas vacías.

Comments are closed.