如何处理 sql 中被零除的错误

How to deal with divide by zero error in sql

我是 SQL 的新手,想知道处理除以零的最佳方法。我知道 NULLIF 函数,但是我在实现它时遇到了一些麻烦。

在此示例中,每个字段都可以为零。解决这个问题的最佳方法是什么?我们应该只检查整个表达式是否等于零,还是对 mu 表达式中的每个字段进行某种检查?

 SELECT             
        round(Sum((SOI.CurItemValue + SOI.CurTaxValue) / NULLIF(SOI.Quantity,0) * NULLIF(SOI.QuantityOutstanding,0)),2) 
        FROM SalesOrderItems SOI

使用当前代码,我得到 Null value is eliminated by an aggregate or other SET operation.

只有当 Quantity 大于 0 时,您才可以使用 CASE 来计算。检查此查询:

SELECT             
    CASE WHEN SOI.Quantity=0 THEN 0
         ELSE ROUND( Sum( (SOI.CurItemValue + SOI.CurTaxValue) / SOI.Quantity  * SOI.QuantityOutstanding ),2) END OutstandingValue
FROM SalesOrderItems SOI