有没有一种方法可以更改Sql Server中现有十进制列的精度?
Answers:
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
这已经在SQL Server 2008 R2上进行了测试,但是应该可以在SQL Server 2000+上使用。