为什么我不能在十进制字段中输入整数值?

时间:2010-04-13 13:47:42

标签: sql-server casting integer decimal

我正在尝试为SQL Server表编写一个insert语句,将值1插入到十进制字段中。该字段的类型为十进制(10,10),据我所知,这意味着它最多可以有10位数字,最多10位数字可以在小数点后面。但是,当我尝试运行insert语句时,我收到以下错误:

Arithmetic overflow error converting int to data type numeric.

如果我将字段的数据类型更改为十进制(11,10),它会突然起作用。我在这里不理解什么?我做错了什么?

1 个答案:

答案 0 :(得分:12)

decimal(10, 10)表示所有小数位,小数点左边没有数字!

见这里:http://msdn.microsoft.com/en-us/library/aa258832(SQL.80).aspx_

  

十进制[(p [,s])]

     

p(精度)指定最大小数位数   可以存储在左侧   在小数点右边。   精度必须是1的值   通过最大的精度。该   最大精度为38.默认值   精度是18。

     

s(比例)指定可以的最大小数位数   存储在小数点右侧   点。比例必须是0的值   通过p。可以仅指定比例   如果指定了精度。默认   比例为0;因此,0 <= s <= p。   最大存储容量因基于而异   精度。

decimal(11,10)给出小数点左边1位数字和右边10位数字,所以整数1现在适合!

修改

使用时:decimal(p,s),将p视为要存储的总位数(无论小数点的左侧或右侧),以及s的多少位数那些p数字应该在小数点的右边。

DECIMAL(10,5)=     12345.12345
DECIMAL(10,2)=  12345678.12
DECIMAL(10,10)=         .1234567891
DECIMAL(11,10)=        1.1234567891