Подтвердить что ты не робот

Проверка SQL Server для IsNull и для Zero

У меня есть следующее:

set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1 

Если @VariableEqualToZero имеет значение null, он заменяет 1. Мне нужно его заменить 1, если @VariableEqualToZero = 0. Как мне это сделать?

4b9b3361

Ответ 1

SET @SomeVariable = @AnotherVariable / COALESCE(
        CASE 
             WHEN @VariableEqualToZero = 0 THEN 1
             ELSE @VariableEqualToZero
        END, 1) - 1

Ответ 2

Если вы используете SQL Server, возможно, вы можете использовать оператор nullif? (т.е. установить значение в значение null, если оно равно 0, а затем установить его равным 1, если оно равно null - должно быть уловлено как для 0, так и для NULL

SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1

Ответ 3

set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1

Ответ 4

Вы используете CASE

вместо

ISNULL(@VariableEqualToZero,1)

использование

CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END

COALESCE и ISNULL являются, по сути, просто ярлыками для оператора CASE. Вы можете обратиться за помощью к синтаксису CASE.