2011-11-02 146 views
3

我有一列声明为十进制(4,4)。目前它存储0.0400作为值。现在我需要更新从0.0400存储到9.95.I采用以下方式查询值:在SQL Server 2008中使用decimal数据类型遇到算术溢出错误

Update <tablename> 
set <columnname>= 9.95 
where <condition> 

当我尝试执行,我得到以下错误: 算术溢出错误转换数字数据类型的数字。 该声明已被终止。

请帮忙。

回答

1

如果你写decimal(4,4),什么数据库听到的是:

  • 有四位总
  • 4人全部都是小数点后面

所以一个decimal(4,4)可以存储范围0.00000.9999(及其负面等值)。但是9.95超出该范围,所以它会返回一个错误。

3

定义列decimal(4,4)是说

我将有4位总,其中4来小数点

为了表示9.95后相当于,你需要将其存储为9.9500以满足'小数点后4位'的条件。但是这现在超过了'最大4位数'的条件,所以不能转换。

您至少需要decimal(5, 4)以这种方式存储9.95作为小数。

1

几年前我有类似的问题,这里是我的理解。

十进制(TotalDigitsIncludingDecimal,小数位数)

例如:值= 50.05声明十进制(4,2) 例如:值= 5000.0005声明十进制(8,4)

相关问题