2008-09-23 20 views

Respuesta

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

sólo hay que poner decimal(precision, scale), en sustitución de la precisión y escala con los valores deseados.

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

+1

Esto funcionó para mí al aumentar la precisión para un decimal (18,2) a decimal (18,3). – Junto

+0

Gracias, tan simple, todavía es difícil de encontrar. –

+0

Si tiene un número de 16 dígitos (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

-1

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

Hacer una columna decimal

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

+3

Esto volverá a crear la tabla. –

+1

En ese caso, no haga eso entonces: p – qui

+0

Nunca entendí esa página de tabla de diseño. No puede realizar ningún tipo de modificación en relación con el tipo de datos, aunque no hay problemas para hacerlo en una consulta. Presumiblemente, la página de diseño usa consultas en segundo plano, no entiendo por qué se implementó esta limitación. – Flater

3

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

a saber:

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 fue probado en SQL Server 2008 R2, pero debería funcionar en SQL Server 2000 +.

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

que utiliza esto para el alterration

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

Para que un problema:

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