Comprobar SQL Server para EsNulo y para Zero
-
06-09-2019 - |
Pregunta
Tengo el siguiente:
set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
Si @VariableEqualToZero es nulo sustituye el 1. Lo necesito para sustituir a 1 si @VariableEqualToZero = 0 también. ¿Cómo hago esto?
Solución
SET @SomeVariable = @AnotherVariable / COALESCE(
CASE
WHEN @VariableEqualToZero = 0 THEN 1
ELSE @VariableEqualToZero
END, 1) - 1
Otros consejos
Si está utilizando SQL Server, es probable que pueda utilizar una declaración NULLIF? (Es decir, establecer el valor a null si es 0 entonces ajusta a 1 si es null - debe coger para de ambos 0 y nulos
SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1
Caso de Uso
en lugar de
ISNULL(@VariableEqualToZero,1)
uso
CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END
unirse y ISNULL son esencialmente sólo atajos para una instrucción CASE. Puede consultar la ayuda para la sintaxis del mismo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow