将列十进制(18,8)转换为另一列十进制(18,18)

时间:2010-10-21 12:18:26

标签: 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.

我也试过用GUI做到这一点。没有其他任何改变只是想在之后持有更多数据,。

还有其他办法吗?

2 个答案:

答案 0 :(得分:4)

Decimal数据类型由(precision,scale)

组成

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

Scale是小数点右边的位数。

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

所以你需要decimal(28,18)

MSDN Article on Precision & Scale

答案 1 :(得分:2)

您需要将其更改为28,18您当前的列允许小数点左侧10位数。

将其更改为18,18只允许+/-0.999999999999999999

之间的范围