SQL Server检查IsNull和零

时间:2009-02-24 03:32:14

标签: sql sql-server isnull divide-by-zero

我有以下内容:

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

如果@VariableEqualToZero为null,则替换为1.如果@VariableEqualToZero = 0,我需要它替换1。我该怎么做呢?

4 个答案:

答案 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语法的帮助。