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?

¿Fue útil?

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
scroll top