Tengo el siguiente:EsNulo y para Zero
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?
Tengo el siguiente:EsNulo y para Zero
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?
SET @SomeVariable = @AnotherVariable/COALESCE(
CASE
WHEN @VariableEqualToZero = 0 THEN 1
ELSE @VariableEqualToZero
END, 1) - 1
set @SomeVariable = @AnotherVariable/
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1
Usted 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 obtener la sintaxis de CASE.
Si está utilizando SQL Server, probablemente pueda utilizar una declaración nullif? (Es decir, ajustar el valor en null si es 0, entonces ajusta a 1 si es nulo - debe ponerse tanto para 0 y los nulos
SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
1 'NULLIF()' es el camino a seguir (y es estándar SQL demasiado , así que estaría tentado de reemplazar 'ISNULL()' con 'COALESCE()' :) – onedaywhen