将列小数(18,8)转换为另一列小数(18,18)

Mad*_*Boy 3 sql-server-2005

我有一个十进制值为 18,8 的列。我被要求将其扩展到 18,18 以在,.

ALTER TABLE [dbo].[TransakcjeGotowkowe]
ALTER COLUMN TransakcjeGotowkoweKwota decimal (18,18) NULL

Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

我也尝试通过 GUI 来完成。没有其他变化只是想在 , 之后保存更多数据。

有没有其他方法可以做到这一点?

cod*_*ger 5

Decimal 数据类型由(精度、小数位数)组成

精度是小数点左边和右边的总位数。

比例是小数点右边的位数。

如果要将右侧的位数增加到 18,则需要提高整体精度。在您的情况下,将其增加 10。

所以你需要 decimal(28,18)

MSDN 关于精度和规模的文章

  • 可爱 :-) 我喜欢 StackOverflow 用户 :-) (2认同)
  • 据我了解,十进制(18,8)实际上允许存储 10,8。所以如果我想要 10,18 它需要是 (28,18)。因此精度增加 10。 (2认同)