Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
遇到SQL存储过程被零除的错误。_Sql_Sql Server_Stored Procedures_Divide By Zero - Fatal编程技术网

遇到SQL存储过程被零除的错误。

遇到SQL存储过程被零除的错误。,sql,sql-server,stored-procedures,divide-by-zero,Sql,Sql Server,Stored Procedures,Divide By Zero,试图找出为什么我的存储过程会给我一个“被零除”的错误,我已经把它缩小到这个区域。如果我注释掉以下行,查询将成功运行。我不知道为什么 PartReceived.QuantityReceived / (CASE WHEN PurchaseOrderItem.QuantityOrdered IS NULL THEN PurchaseOrderItem.QuantityOrdered WH

试图找出为什么我的存储过程会给我一个“被零除”的错误,我已经把它缩小到这个区域。如果我注释掉以下行,查询将成功运行。我不知道为什么

            PartReceived.QuantityReceived / 
            (CASE 
                WHEN PurchaseOrderItem.QuantityOrdered IS NULL THEN PurchaseOrderItem.QuantityOrdered
                WHEN PurchaseOrderItem.QuantityOrdered = 0 THEN PurchaseOrderItem.QuantityOrdered
                ELSE PurchaseOrderItem.QuantityOrdered
            END) * 100.0 AS PercentageReceived
我确实在出错之前收到了这个警告,但我做了很多谷歌搜索引导我做的事情。我尝试过使用IFNULL而不是IS NULL,但这似乎也不起作用

Warning: Null value is eliminated by an aggregate or other SET operation.

使用
NULLIF()
,可以避免被零除:

这会将结果返回为
NULL
,而不是生成错误

实际上,您的逻辑更容易写成:

        (PartReceived.QuantityReceived / 
         NULLIF(PurchaseOrderItem.QuantityOrdered, 0)
        ) * 100.0 AS PercentageReceived

案例
没有任何作用。所有三个
THEN
子句返回相同的值。

有效。在您指出之前,我没有注意到它们都返回了相同的值。谢谢戈登!
        (PartReceived.QuantityReceived / 
         NULLIF(PurchaseOrderItem.QuantityOrdered, 0)
        ) * 100.0 AS PercentageReceived