当从计算中获得两个值时,防止除以零

chr*_*982 0 sql sql-server-2008-r2

我正在尝试完成以下内容:

(value_a + value_b)/(value_c + value_d)

通常我避免了零除错误,如下所示:

CASE WHEN value_a + value_b = 0
     THEN 0
     ELSE (value_a + value_b)/(value_c + value_d)
END
Run Code Online (Sandbox Code Playgroud)

由于某些原因,这是行不通的,这让我想知道在过去我的结果集中是否从未包括零.

我们将非常感激地收到关于此的任何指示.

D S*_*ley 8

你正在检查分子,而不是分母:

CASE WHEN value_c + value_d = 0
     THEN 0
     ELSE (value_a + value_b)/(value_c + value_d)
END
Run Code Online (Sandbox Code Playgroud)

另一种方式是使用NULLIFCOALESCE:

COALESCE((value_a + value_b)/NULLIF((value_c + value_d),0)
  ,0)
Run Code Online (Sandbox Code Playgroud)