2008-09-23 13 views

Répondre

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

Il suffit de mettre decimal(precision, scale), en remplacement de la précision et de l'échelle avec vos valeurs souhaitées.

Je n'ai effectué aucun test avec les données du tableau, mais si vous modifiez la précision, vous risquez de perdre des données si la nouvelle précision est inférieure.

+1

Cela a fonctionné pour moi lors de l'augmentation de la précision pour une décimale (18,2) à la décimale (18,3). – Junto

+0

Merci, si simple, encore difficile à trouver. –

+0

Si vous avez un nombre de 16 (total) et que vous augmentez l'échelle, va-t-il se lancer sur les chiffres d'ordre supérieur pour faire de la place aux 2 nouvelles décimales? Malheureusement, je ne peux pas tester cela pour le moment. – user420667

-1

Aller à la définition de l'entreprise, cliquez sur votre nom de domaine et carte de projet.

Faire une colonne décimale

Dans les propriétés en bas il y a une propriété de précision

+3

Cela recréera la table. –

+1

Dans ce cas, ne faites pas cela alors: p – qui

+0

Je n'ai jamais compris cette page de la table de conception. Vous ne pouvez pas apporter de modifications sur le type de données, même si cela ne pose aucun problème dans une requête. Vraisemblablement, la page de conception utilise des requêtes en arrière-plan, je ne comprends pas pourquoi cette limitation a été implémentée. – Flater

3

Il existe peut-être un meilleur moyen, mais vous pouvez toujours copier la colonne dans une nouvelle colonne, la supprimer et renommer la nouvelle colonne pour le nom de la première colonne.

à savoir:

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 

Cela a été testé sur SQL Server 2008 R2, mais devrait fonctionner sur SQL Server 2000+.

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

J'utilise ce pour la alterration

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

Pour vous problème:

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