如何更改SQLServer中十进制列的精度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

是否有方法更改SQLServer中现有十进制列的精度?

提问于
用户回答回答于
ALTER TABLE Testing ALTER COLUMN TestDec decimal(16,1)

刚把decimal(precision, scale),将精度和比例替换为所需的值。

我还没有对表中的数据做过任何测试,但是如果您更改了精度,那么如果新的精度较低,就会丢失数据。

用户回答回答于

可能有更好的方法,但您可以始终将该列复制到新列中,将其删除并将新列重命名为第一列的名称。

即:

ALTER TABLE MyTable ADD NewColumnName DECIMAL(16, 2);
GO

UPDATE  MyTable
SET     NewColumnName = OldColumnName;
GO

ALTER TABLE CONTRACTS DROP COLUMN OldColumnName;
GO


EXEC sp_rename
    @objname = 'MyTable.NewColumnName',
    @newname = 'OldColumnName',
    @objtype = 'COLUMN'
GO

这在SQLServer 2008 R2上进行了测试,但应该在SQLServer 2000+上工作。

扫码关注云+社区