我有以下内容:
set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
如果@VariableEqualToZero为null,则替换为1.如果@VariableEqualToZero = 0,我需要它替换1。我该怎么做呢?
答案 0 :(得分:32)
如果您使用的是SQL Server,您可以使用nullif语句吗? (即如果它为0则将值设置为null,如果它为null则将其设置为1 - 应该捕获0和NULL
SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
答案 1 :(得分:11)
SET @SomeVariable = @AnotherVariable / COALESCE(
CASE
WHEN @VariableEqualToZero = 0 THEN 1
ELSE @VariableEqualToZero
END, 1) - 1
答案 2 :(得分:2)
set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1
答案 3 :(得分:2)
您使用CASE
而不是
ISNULL(@VariableEqualToZero,1)
使用
CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END
COALESCE和ISNULL基本上只是CASE语句的快捷方式。 您可以参考CASE语法的帮助。