gpt4 book ai didi

SQL服务器日志: "An invalid floating point operation occurred" - even though input is within range

转载 作者:行者123 更新时间:2023-12-02 13:02:23 28 4
gpt4 key购买 nike

我收到错误消息

Msg 3623, Level 16, State 1, Line 25
An invalid floating point operation occurred.

从 SQL Server 11.0.2100(在 AWS RDS 实例上)执行以下查询:

SELECT SUM(LOG(col + 1)) FROM MyTable;

col 的所有值都在 -0.1 和 0.1 范围内。

如果我从查询中删除 SUM,它运行正常,这意味着 LOG 的输入是正确的:

SELECT LOG(col + 1) FROM MyTable;

此外,如果我将上述内容选择到临时表中,然后对临时表中的值进行求和,这也可以正常工作,这意味着求和没有任何问题:

SELECT LOG(col + 1) thelog INTO #x FROM MyTable;
SELECT SUM(thelog) FROM #x;
DROP TABLE #x;

只有当我同时运行 SUM 和 LOG 时才会出现问题。

为什么会发生这种情况? SQL Server 是否有可能以某种方式将 +1 重新排列在 LOG 之外,从而导致 LOG 输入超出范围?

注意:在查询中放置 CASE WHEN col > -1 也可以修复该问题,但这不是必需的,因为 col + 1 的所有值都在范围内。我想知道这可能的根本原因是什么......

最佳答案

浮点值因舍入问题而臭名昭著,因为它们存储为二进制分数,而通常没有精确的十进制等值。我认为这里发生的情况是你的一个值非常接近-1(例如-0.999999999999999999999),当你添加1时它有时可能会四舍五入到0。对于输入0,LOG函数是未定义的,所以结果是发生了无效的浮点运算

关于SQL服务器日志: "An invalid floating point operation occurred" - even though input is within range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com