Jak zmienić precyzję kolumny dziesiętnej w Sql Server?


85

Czy istnieje sposób na zmianę precyzji istniejącej kolumny dziesiętnej w Sql Server?

Odpowiedzi:


157
ALTER TABLE Testing ALTER COLUMN TestDec decimal(16,1)

Po prostu umieść decimal(precision, scale), zastępując precyzję i skalę żądanymi wartościami.

Nie przeprowadziłem żadnych testów z danymi w tabeli, ale jeśli zmienisz dokładność, stracisz dane, jeśli nowa precyzja będzie niższa.


2
To zadziałało dla mnie, gdy zwiększyłem dokładność z dziesiętnego (18,2) do dziesiętnego (18,3).
— Rebecca,

Dziękuję, tak proste, wciąż trudne do znalezienia.
— Philippe Lavoie

Jeśli masz 16 (całkowitą) liczbę i zwiększysz skalę, czy odbije się ona od cyfr wyższego rzędu, aby zrobić miejsce na 2 nowe miejsca dziesiętne? Niestety w tej chwili nie mogę tego przetestować.
— user420667

12
Aby odpowiedzieć na własne pytanie, utworzyłem sqlfiddle: sqlfiddle.com/#!3/4b8cb/1/0 . Odpowiedź jest taka, że ​​zmiana dziesiętnego (18,2) na dziesiętny (18,3) spowoduje błąd podczas zmiany tabeli. decimal (18,2) to decimal (19,3) chociaż powinno działać.
— user420667

12

Może być lepszy sposób, ale zawsze możesz skopiować kolumnę do nowej kolumny, upuścić ją i zmienić nazwę nowej kolumny z powrotem na nazwę pierwszej kolumny.

do dowodu:

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

Zostało to przetestowane na SQL Server 2008 R2, ale powinno działać na SQL Server 2000+.


0
ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DATA_TYPE();

Dla ciebie problem:

ALTER TABLE (Your_Table_Name) MODIFY (Your_Column_Name) DECIMAL(Precision, Scale); 

-2
ALTER TABLE `tableName` CHANGE  `columnName` DECIMAL(16,1) NOT NULL;

Używam tego do zmiany


-3

Przejdź do menedżera przedsiębiorstwa, tabeli projektowej, kliknij swoje pole.

Utwórz kolumnę dziesiętną

We właściwościach na dole znajduje się właściwość precyzyjna


4
Spowoduje to ponowne utworzenie tabeli.
— Alexander Kojevnikov

1
W takim razie nie rób tego wtedy: p
— qui

Nigdy nie rozumiałem tej strony tabeli projektów. Nie można tam dokonywać żadnych zmian dotyczących typu danych, mimo że nie ma problemu z wykonaniem tego w zapytaniu. Przypuszczalnie strona projektowa używa zapytań w tle, nie rozumiem, dlaczego to ograniczenie zostało wprowadzone.
— Flater

3
Możesz to wyłączyć poprzez: Narzędzia> Opcje> Projektanci - „Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli”.
— Chris Missal
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.