我有以下:

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

如果@VariableEqualToZero为null它代替了1.我需要它来代替1,如果@VariableEqualToZero = 0为好。我该怎么做呢?

有帮助吗?

解决方案

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

其他提示

如果您正在使用SQL Server,你也许可以使用NULLIF声明? (即该值设置为空,如果它是0,那么将其设置为1,如果是空 - 应该捕获两者的0和空值

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

您使用CASE

代替

ISNULL(@VariableEqualToZero,1)

使用

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

COALESCE和ISNULL基本上是一个CASE语句只是快捷方式。 您可以咨询为CASE的语法帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top