【发布时间】:2013-04-09 01:18:30
【问题描述】:
我在 SQL Server 2012 数据库中有一个当前为十进制 (30,20) 的字段,因为这是数据提供程序的格式。然而,这么大的小数是完全没有必要的,考虑到这个表有数百万行,我想把它修剪成小数(16,7)。
我尝试了以下 SQL:
alter table mytable alter column mycolumn decimal(16,7)
但这导致了错误:
Arithmetic overflow error converting numeric to data type numeric.
更改此字段的最佳方法是什么?我显然意识到错误正在发生,因为列中的值超过了新的精度。我想知道的是,是否有一个脚本可以截掉小数点后7位的任何数字,然后转换列数据类型?
【问题讨论】:
标签: sql sql-server sql-server-2012 alter-table alter-column