Tsql 将数字(9,2)转换为数字(9,3)时出现算术溢出错误

Tsql 将数字(9,2)转换为数字(9,3)时出现算术溢出错误,tsql,Tsql,我试图在我的数据库中添加另一个小数点,但在Microsoft SQL Server Management Studio(2014)中不断出现此错误。该列当前为数值(9,2)NULL,我想将其更改为数值(9,3)NULL。无论是通过代码还是设计者,它都不允许我这样做 ALTER TABLE LOG ALTER COLUMN WEIGHT numeric(9, 3) NULL -- Arithmetic overflow error converting numeric to data type

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

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

-- Arithmetic overflow error converting numeric to data type numeric.
读了几篇文章后,我没能找到这个问题的答案。因为我只是让场变大,所以理论上不应该有截断问题之类的问题

表中最大值为1102439.00,最小值为0.00。没有一个空值

  • 如果您已经将其定义为数字(10,3),这相当于十进制(10,3),那么您使用的精度p的范围为10-19,占9个字节()。改为使用十进制(19,3),以便在相同的存储空间中获得列的最大值

  • 由于您的最大值长度是
    9
    ,并且您正试图将其比例定义为
    3
    ,这是将其长度设置为10位数字,而
    数值(9,3)
    ,因此

    由于
    数字(p,S)
    其中

    • p是表示总位数的精度

    • S表示小数点后的总位数


    为了避免这种情况,请尝试定义
    数值(10,3)
    ,这可能会解决您的问题

    ,因为您的最大值长度是
    9
    ,并且您尝试将其比例定义为
    3
    ,即将其长度设置为
    10
    位,为了避免这种情况,请尝试定义数值(10,3),这可能会解决你的问题problem@JaydipJ这实际上解决了我的问题。为了提供更多关于这个解决方案的信息:你没有使字段变大,你只是移动了小数点。任何9位数字都将失败,例如1102439.00,因为这将需要1102439.000,长度为10位。@JaydipJ能否请您将其添加为答案,以便我将其标记为解决方案?好的,不,我会为您做的