我有以下代码:
set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
如果 @VariableEqualToZero 为 null,则会替换为 1。我需要当 @VariableEqualToZero = 0 时也替换为 1。如何实现?我有以下代码:
set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
如果 @VariableEqualToZero 为 null,则会替换为 1。我需要当 @VariableEqualToZero = 0 时也替换为 1。如何实现?如果您正在使用SQL Server,您可能可以使用NULLIF
语句?
即,如果值为0
,则将其设置为NULL
,然后如果值为NULL
,则将其设置为1
——这应该可以捕获两种情况:0和NULL:
SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
SET @SomeVariable = @AnotherVariable / COALESCE(
CASE
WHEN @VariableEqualToZero = 0 THEN 1
ELSE @VariableEqualToZero
END, 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语句的语法帮助。
NULLIF()
是一个好选择(而且它是标准 SQL,所以我会倾向于用COALESCE()
替换ISNULL()
:) - onedaywhen