Tsql 当某些除数为空时,处理除数0错误
我得到了被0除的错误。我注意到有时候我除以的字段是空的Tsql 当某些除数为空时,处理除数0错误,tsql,Tsql,我得到了被0除的错误。我注意到有时候我除以的字段是空的 (SUM(RentMonths * SQFT) / SUM(SQFT)) 当SQFT有时可以为空时,处理这种情况的正确方法是什么?我知道这可能是糟糕的数据,但这不是重点;我现在无法解决这个问题。除以NULL完全有效-结果就是NULL。问题是(如错误消息所述)当您尝试除以零时 您可以使用来解决此问题: (SUM(RentMonths * SQFT) / NULLIF(SUM(SQFT), 0)) 如果除数为0或任一操作数为NULL,则结果
(SUM(RentMonths * SQFT) / SUM(SQFT))
当SQFT有时可以为空时,处理这种情况的正确方法是什么?我知道这可能是糟糕的数据,但这不是重点;我现在无法解决这个问题。除以
NULL
完全有效-结果就是NULL
。问题是(如错误消息所述)当您尝试除以零时
您可以使用来解决此问题:
(SUM(RentMonths * SQFT) / NULLIF(SUM(SQFT), 0))
如果除数为0
或任一操作数为NULL
,则结果将为NULL
正如评论中指出的,还可以使用
案例
陈述:
CASE WHEN SUM(SQFT) <> 0 THEN (SUM(RentMonths * SQFT) / SUM(SQFT)) END
当总和(平方英尺)为0时,则(总和(租金月*平方英尺)/总和(平方英尺))结束
优点是,这几乎适用于任何数据库,但缺点是它重复表达式以计算除数。除以
NULL
完全有效-结果就是NULL
。问题是(如错误消息所述)当您尝试除以零时
您可以使用来解决此问题:
(SUM(RentMonths * SQFT) / NULLIF(SUM(SQFT), 0))
如果除数为0
或任一操作数为NULL
,则结果将为NULL
正如评论中指出的,还可以使用
案例
陈述:
CASE WHEN SUM(SQFT) <> 0 THEN (SUM(RentMonths * SQFT) / SUM(SQFT)) END
当总和(平方英尺)为0时,则(总和(租金月*平方英尺)/总和(平方英尺))结束
优点是,这几乎适用于任何数据库,但缺点是它重复表达式以计算除数。IF语句在这里似乎非常合适,不是吗 不知道这是否是正确的TSQL语法,但:
IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT) / SUM(SQFT))
一个IF语句在这里似乎很合适,不是吗 不知道这是否是正确的TSQL语法,但:
IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT) / SUM(SQFT))
谢谢,是的,这个案例和可读代码一样非常草率。我将尝试使用NULLIF。谢谢。是的,这个案例和可读代码一样非常草率。我要试试这个。