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.