在SQL Server 2008中对数计数时,无效的浮点运算错误

问题描述

| 在Microsoft SQL Server 2008中,我有一个表,称为“ 0”,包含约60万行(实际上,这是连接其他几个表的结果,但我认为这并不重要)。它的其中一列,例如
value
类型为numeric(6,2)。 简单的查询
SELECT value FROM myTable ORDER BY value
当然会返回大约60万个数字,从1.01(即最低)开始,到70.00(最高)结束;没有ѭ3或其他值。 请注意,所有这些值都是数字和正数。但是,在调用ѭ4时,我收到一条错误消息“发生了无效的浮点运算”。 查询运行约3分钟后,总是会出现此错误。将600k值复制到Excel并计算其LN()时,绝对没有问题。 我尝试将
value
转换为实数或浮点数,这根本没有帮助。终于我找到了解决方法::6ѭ。这可行。但是为什么当所有值都是正值时呢?我试图将结果与对数与Excel计数的对数进行比较-它们都是相同的(在某些行中仅出现10 ^(-15)或更小的阶差,这几乎肯定是由不同的精度给出的) 。我想这意味着
CASE
语句中的条件始终为真。 有谁知道为什么会发生此错误?任何帮助表示赞赏。谢谢。     

解决方法

您可以确定导致概率的特定值;
declare @f numeric(6,2),@r float
begin try select
    @f = value,@r = LOG(value) 
from mytable
end try begin catch
    select error_message(),\'value=\',@f
end catch
    ,当执行LOG(0)时,您会收到此错误-\“发生了无效的浮点运算”。在数学领域,LOG(zero)的值是不确定的,因此是错误的。 干杯。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...