14

我有以下内容:

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

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

4

4 回答 4

38

如果您使用的是 SQL Server,您可能可以使用NULLIF语句?
即,将值设置为NULLif 它0然后将其设置为1if 它NULL- 应该同时捕获 0 和 NULL:

SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
于 2011-10-11T06:22:18.357 回答
17
SET @SomeVariable = @AnotherVariable / COALESCE(
        CASE 
             WHEN @VariableEqualToZero = 0 THEN 1
             ELSE @VariableEqualToZero
        END, 1) - 1
于 2009-02-24T03:37:06.100 回答
3
set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1
于 2009-02-24T03:37:18.923 回答
2

你用 CASE

代替

ISNULL(@VariableEqualToZero,1)

采用

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

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

于 2009-02-24T03:43:55.523 回答