Come si modifica la precisione di una colonna decimale in Sql Server?


85

C'è un modo per modificare la precisione di una colonna decimale esistente in Sql Server?

Risposte:


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

decimal(precision, scale)Metti semplicemente , sostituendo la precisione e la scala con i valori desiderati.

Non ho eseguito alcun test con questo con i dati nella tabella, ma se modifichi la precisione, potresti perdere i dati se la nuova precisione è inferiore.


2
Questo ha funzionato per me quando ho aumentato la precisione da un decimale (18,2) a un decimale (18,3).
Rebecca

Grazie, così semplice, ancora difficile da trovare.
Philippe Lavoie

Se hai un numero di 16 cifre (totale) e aumenti la scala, supererà le cifre di ordine superiore per fare spazio alle 2 nuove cifre decimali? Purtroppo al momento non posso provarlo.
user420667

12
Per rispondere alla mia domanda, ho creato uno sqlfiddle: sqlfiddle.com/#!3/4b8cb/1/0 . La risposta è che la modifica del decimale (18,2) in decimale (18,3) comporterà un errore quando si modifica la tabella. da decimale (18,2) a decimale (19,3) anche se dovrebbe funzionare.
user420667

12

Potrebbe esserci un modo migliore, ma puoi sempre copiare la colonna in una nuova colonna, rilasciarla e rinominare la nuova colonna con il nome della prima colonna.

vale a dire:

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

Questo è stato testato su SQL Server 2008 R2, ma dovrebbe funzionare su SQL Server 2000+.


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

Per te problema:

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

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

Lo uso per l'alterazione


-3

Vai a gestore aziendale, tabella dati, fai clic sul tuo campo.

Crea una colonna decimale

Nelle proprietà in basso c'è una proprietà di precisione


4
Questo ricreerà la tabella.
Alexander Kojevnikov

1
In tal caso, non farlo allora: p
qui

Non ho mai capito quella pagina del tavolo design. Non puoi apportare alcuna modifica al tipo di dati, anche se non ci sono problemi a farlo in una query. Presumibilmente, la pagina di progettazione utilizza query in background, non capisco perché sia ​​stata implementata questa limitazione.
Flater

3
Puoi disabilitarlo tramite: Strumenti> Opzioni> Designer - "Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella".
Chris Missal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.