¿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?

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.


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+.


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); 

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

Yo uso esto para la alteración


-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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.