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?

Andrew Jones
źródło

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.

VanSkalen
źródło
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+.

bnieland
źródło
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); 
H Shah
źródło
-2
ALTER TABLE `tableName` CHANGE  `columnName` DECIMAL(16,1) NOT NULL;

Używam tego do zmiany

4302836
źródło
-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

qui
źródło
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