2016-06-22 37 views
2

我试图在数据库中添加另一个小数点,并且在Microsoft SQL Server Management Studio(2014)中不断收到此错误。该列当前是数字(9,2)NULL,我想将其更改为数字(9,3)NULL。无论是通过代码还是设计者,它都不会允许我这样做。将数字(9,2)转换为数字(9,3)时的算术溢出错误

ALTER TABLE LOG ALTER COLUMN WEIGHT numeric(9, 3) NULL 

-- Arithmetic overflow error converting numeric to data type numeric. 

阅读了几个线程后,我没有设法找到这个问题的答案。由于我只是让这个领域变得更大,所以在理论上应该没有截断问题或类似问题。

表中最大值为1102439.00,最小值为0.00。不是一个NULL。

+3

因为你最大的值长度为'9'和你想它的规模定义为'3 '这是它的长度为'10'数字,为了避免这种情况尝试定义NUMERIC(10,3),这可以解决你的问题 –

+1

@JaydipJ这实际上解决了我的问题。 – Danieboy

+0

为了提供更多关于解决方案的信息:您不是让字段更大,而只是移动小数点。任何9位数字都会失败,例如1102439.00,因为这将需要是1024位长度的1102439.000。 –

回答

1

因为你最大的值长度为9,你正在尝试规模定义将3这使得其长度未安装在NUMERIC(9,3) 10位,

由于NUMERIC(P,S)其中,

  • P是精度显示总位数的数字

  • S是标度,表示tot小数

后位数人来避免这种情况尝试定义NUMERIC(10,3),这可能会解决您的问题

1
  1. 当已经把它定义为NUMERIC(10,3),其等同于DECIMAL(10,3),您使用的精度p在正在占用9个字节的范围内10-19(https://msdn.microsoft.com/en-us/library/ms187746.aspx )。改为使用DECIMAL(19,3),以便您可以获得列的相同存储的最大值。
相关问题