¿Cómo modifico la precisión de una columna decimal en Sql Server?

85

¿Hay alguna forma de alterar la precisión de una columna decimal existente en Sql Server?

Andrew Jones
fuente

Respuestas:

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

Simplemente decimal(precision, scale), reemplace la precisión y la escala con los valores deseados.

No he realizado ninguna prueba con esto con los datos de la tabla, pero si altera la precisión, estaría sujeto a perder datos si la nueva precisión es menor.

VanSkalen
fuente
2
Esto funcionó para mí al aumentar la precisión de un decimal (18,2) a decimal (18,3).
Rebecca
Gracias, tan simple, todavía difícil de encontrar.
Philippe Lavoie
Si tiene un número de 16 dígitos (en total) y aumenta la escala, ¿tropezará con los dígitos de orden superior para dejar espacio para los 2 nuevos lugares decimales? Desafortunadamente, no puedo probar esto en este momento.
user420667
12
Para responder a mi propia pregunta, creé un sqlfiddle: sqlfiddle.com/#!3/4b8cb/1/0 . La respuesta es que cambiar decimal (18,2) a decimal (18,3) resultará en un error al alterar la tabla. decimal (18,2) a decimal (19,3) aunque debería funcionar.
user420667
12

Puede haber una mejor manera, pero siempre puede copiar la columna en una nueva columna, soltarla y cambiar el nombre de la nueva columna de nuevo al nombre de la primera columna.

esto es:

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

Esto se probó en SQL Server 2008 R2, pero debería funcionar en SQL Server 2000+.

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

Para tu problema:

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

Yo uso esto para la alteración

4302836
fuente
-3

Vaya al administrador de la empresa, tabla de diseño, haga clic en su campo.

Haz una columna decimal

En las propiedades en la parte inferior hay una propiedad de precisión

qui
fuente
4
Esto volverá a crear la tabla.
Alexander Kojevnikov
1
En ese caso, no hagas eso entonces: p
qui
Nunca entendí la página de la tabla de diseño. No puede realizar ningún tipo de edición allí con respecto al tipo de datos, aunque no hay ningún problema para hacer esto en una consulta. Presumiblemente, la página de diseño utiliza consultas en segundo plano, no entiendo por qué se implementó esta limitación.
Flater
3
Puede desactivar esto a través de: Herramientas> Opciones> Diseñadores - "Evitar guardar cambios que requieran la recreación de la tabla".
Chris Missal