SQL Server 检查是否为 Null 和是否为零

15

我有以下代码:

set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1 
如果 @VariableEqualToZero 为 null,则会替换为 1。我需要当 @VariableEqualToZero = 0 时也替换为 1。如何实现?
4个回答

42

如果您正在使用SQL Server,您可能可以使用NULLIF语句?
即,如果值为0,则将其设置为NULL,然后如果值为NULL,则将其设置为1 ——这应该可以捕获两种情况:0和NULL:

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

+1 NULLIF() 是一个好选择(而且它是标准 SQL,所以我会倾向于用 COALESCE() 替换 ISNULL() :) - onedaywhen

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

使用CASE替代coalesce()和Case(),并在isnull中使用? ISNULL([@VariableEqualToZero],0) = 0 THEN 1 - AquaAlex

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

3

您可以使用CASE语句

而不是

ISNULL(@VariableEqualToZero,1)

使用

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

COALESCE和ISNULL本质上只是CASE语句的快捷方式。您可以查阅CASE语句的语法帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接