it-swarm.com.de

Wie ändere ich die Genauigkeit einer Dezimalspalte in SQL Server?

Gibt es eine Möglichkeit, die Genauigkeit einer vorhandenen Dezimalspalte in SQL Server zu ändern?

73
Andrew Jones
ALTER TABLE Testing ALTER COLUMN TestDec decimal(16,1)

Setzen Sie einfach decimal(precision, scale) ein und ersetzen Sie die Genauigkeit und Skalierung durch Ihre gewünschten Werte.

Ich habe damit noch keine Tests mit Daten in der Tabelle durchgeführt, aber wenn Sie die Genauigkeit ändern, können Daten verloren gehen, wenn die neue Genauigkeit niedriger ist.

138
VanSkalen

Möglicherweise gibt es einen besseren Weg, aber Sie können die Spalte immer in eine neue Spalte kopieren, sie ablegen und die neue Spalte wieder in den Namen der ersten Spalte umbenennen.

nämlich:

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

Dies wurde unter SQL Server 2008 R2 getestet, sollte jedoch unter SQL Server 2000+ funktionieren.

9
bnieland
ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DATA_TYPE();

Für Sie Problem:

ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DECIMAL(Precision, Scale); 
0
H Shah
ALTER TABLE `tableName` CHANGE `columnName` `columnName` DECIMAL(16,1) NOT NULL;

Ich benutze Dies für die Veränderung

0
4302836