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

时间:2015-02-19 13:36:36

标签: 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

由于某些原因,这不起作用,这让我想知道过去我的一个结果集是否从未包括零。

对此的任何指示都将非常感激。

1 个答案:

答案 0 :(得分:8)

您正在检查分子,而不是分母

CASE WHEN value_c + value_d = 0
     THEN 0
     ELSE (value_a + value_b)/(value_c + value_d)
END

另一种方式是使用NULLIFCOALESCE

COALESCE((value_a + value_b)/NULLIF((value_c + value_d),0)
  ,0)