sql server中的十进制数据类型将数字四舍五入为零

时间:2014-12-26 11:41:40

标签: sql-server sql-server-2008

我在表x中有一个列,它是一个十进制类型:decimal(21,4)

当我输入数字0.00873时,它将其更改为0.0000 任何人都可以解释为什么会发生这种情况,我能做些什么来保存我上面提到的性质数量?

1 个答案:

答案 0 :(得分:1)

只是一个假设(我认为在这种情况下根本就没有解决方案,因为没有人可以解释这是什么“那个”你提到正在发生的事情)

我认为SQL Server没有任何内容。您可能需要在UI内部查看此错误的原因。 下面的SQL代码显示了如何将十进制数归零,因为内部类型不一致 - 当输入和输出之间的原始数据存储在不太精确的类型中时。

declare
    @dec decimal(21, 4),
    @int int;

set @dec = 0.00873;
set @int = @dec;

select @dec [original]
, @int [integer]
, cast(@int as decimal(21, 4)) [cast_back_to_decimal]

结果

original    integer cast_back_to_decimal
----------------------------------------
0.0087      0       0.0000