当从计算中获得两个值时防止被零除
prevent divide by zero when both values are obtained from a calculation
我正在尝试完成以下内容:
(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
出于某种原因,这不起作用,这让我想知道过去我的一个结果集是否从未包含零。
如有任何意见,我们将不胜感激。
您检查的是分子,而不是分母:
CASE WHEN value_c + value_d = 0
THEN 0
ELSE (value_a + value_b)/(value_c + value_d)
END
另一种方法是使用 NULLIF
和 COALESCE
:
COALESCE((value_a + value_b)/NULLIF((value_c + value_d),0)
,0)
我正在尝试完成以下内容:
(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
出于某种原因,这不起作用,这让我想知道过去我的一个结果集是否从未包含零。
如有任何意见,我们将不胜感激。
您检查的是分子,而不是分母:
CASE WHEN value_c + value_d = 0
THEN 0
ELSE (value_a + value_b)/(value_c + value_d)
END
另一种方法是使用 NULLIF
和 COALESCE
:
COALESCE((value_a + value_b)/NULLIF((value_c + value_d),0)
,0)