SQL Server的检查ISNULL和零
-
06-09-2019 - |
题
我有以下:
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的语法帮助。
不隶属于 StackOverflow