set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
Если @VariableEqualToZero имеет значение null, он заменяет 1. Мне нужно его заменить 1, если @VariableEqualToZero = 0. Как мне это сделать?
Ответ 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.