SQL Server检查IsNull和零

Jef*_*eff 12 sql sql-server isnull divide-by-zero

我有以下内容:

set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1 
Run Code Online (Sandbox Code Playgroud)

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

小智 32

如果您使用的是SQL Server,则可以使用nullif语句?(即如果它为0则将值设置为null,如果它为null则将其设置为1 - 应该同时捕获0和NULL

SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
Run Code Online (Sandbox Code Playgroud)


use*_*794 12

SET @SomeVariable = @AnotherVariable / COALESCE(
        CASE 
             WHEN @VariableEqualToZero = 0 THEN 1
             ELSE @VariableEqualToZero
        END, 1) - 1
Run Code Online (Sandbox Code Playgroud)