当某些除数为NULL时,处理除数0错误

时间:2012-07-10 15:41:41

标签: tsql

我正在除以0错误。我注意到有时我划分的字段是NULL。

(SUM(RentMonths * SQFT) / SUM(SQFT))

当SQFT有时可以为空时,处理这种情况的正确方法是什么?我知道这可能是糟糕的数据,但除此之外;我现在无法解决这个问题。

2 个答案:

答案 0 :(得分:5)

除以NULL完全有效 - 结果只是NULL。当您尝试除以时,问题是(如错误消息所述)。

您可以使用NULLIF来解决此问题:

(SUM(RentMonths * SQFT) / NULLIF(SUM(SQFT), 0))

如果除数为NULL或任一操作数为0,则结果为NULL


正如评论中所指出的,也可以使用CASE语句:

CASE WHEN SUM(SQFT) <> 0 THEN (SUM(RentMonths * SQFT) / SUM(SQFT)) END

优势在于它几乎可以在任何数据库中使用,但缺点是它会重复表达式来计算除数。

答案 1 :(得分:0)

IF声明似乎非常合适,不是吗?

不知道这是否是正确的TSQL语法,但是:

IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT) / SUM(SQFT))