发生了无效的浮点运算

时间:2013-03-08 19:21:54

标签: sql sql-server

我发现查询的问题导致SQL Server 2008中出现“发生无效浮点运算”错误。我想到的是,它在某些情况下有效。

查询调用WHERE子句中的函数,如下所示:

AND
(
((dbo.GetImp(ImaxP, pmax_derated, Pmax) NOT BETWEEN 1.59 AND 1.93
    OR dbo.GetVmp(ImaxP, pmax_derated, Pmax) NOT BETWEEN 43.7 AND 53.3)
AND bin.WattsSold = 85

OR

((dbo.GetImp(ImaxP, pmax_derated, Pmax) NOT BETWEEN 1.61 AND 1.95
    OR dbo.GetVmp(ImaxP, pmax_derated, Pmax) NOT BETWEEN 44.3 AND 54.1)
AND bin.WattsSold = 87.5
)

函数dbo.GetImp和dbo.GetVmp返回DECIMAL(9,3),bin.WattsSold的所有记录返回值85和87.5。我已经尝试将bin.WattsSold转换为DECIMAL(9,3)并以任何可想象的方式投射所有内容;没有运气。

现在,有趣的是,如果我注释掉“AND bin.WattsSold”子句中的任何一个,它将起作用(即整个where子句保持不变,并且ONE bin.WattsSold子句仍然存在,任意一个)。更有趣的是,当我在上面进行那个小测试时,删除其中一个,我在任何一种情况下都没有返回任何行...所以这个查询反正没有返回任何数据。

0 个答案:

没有答案