POWER SQL Server发生无效的浮点运算

时间:2016-02-05 09:10:28

标签: sql-server

我遇到代码问题,当我运行时我得到了

An invalid floating point operation occurred

我的代码如下:

select POWER( ISNULL(value1,0) / NULLIF(value2,0) , 12 / CONVERT(numeric(6,2),value3))

其中value1(数据类型:money),value2(数据类型:money),value3(数据类型:int)是我数据库中的列。

当value1 = Null,value2 = 164083520.00且value3 = 177

时,我收到该错误

奇怪的是,如果我用这些数字替换,我得到了正确的结果,但不是在运行时。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

执行以下脚本我在SQL Server 2012上没有收到任何错误.AFAICT你也不会在其他版本上获得任何错误。您必须在其他地方进行计算,导致浮点运算无效。

DECLARE @values TABLE(value1 MONEY,value2 MONEY,value3 INT);
INSERT INTO @values(value1,value2,value3)VALUES(NULL,164083520.00,177);

SELECT
    result=POWER(ISNULL(value1,0)/NULLIF(value2,0), 12.0/CONVERT(numeric(6,2),value3))
FROM
    @values;

结果

0.00