当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何更改SqlServer中十进制列的精度?》经验,为你挑选了2个好方法。

有没有办法改变Sql Server中现有十进制列的精度?



1> 小智..:
ALTER TABLE Testing ALTER COLUMN TestDec decimal(16,1)

只需将decimal(precision, scale)精度和比例替换为所需的值即可.

我没有对表格中的数据进行任何测试,但是如果你改变了精度,如果新的精度较低,你将会丢失数据.


为了回答我自己的问题,我创建了一个sqlfiddle:http://sqlfiddle.com/#!3/4b8cb/1/0.答案是将十进制(18,2)更改为十进制(18,3)将导致更改表时出错.十进制(18,2)到十进制(19,3)虽然应该工作.

2> bnieland..:

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

以机智:

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

这是在SQL Server 2008 R2上测试的,但应该适用于SQL Server 2000+.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有