我有以下内容:
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
语句?
即,将值设置为NULL
if 它0
然后将其设置为1
if 它NULL
- 应该同时捕获 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 语法的帮助。