Existe-t-il un moyen de modifier la précision d'une colonne décimale existante dans Sql Server ?
Cela a fonctionné pour moi lorsque j'ai augmenté la précision d'un décimal(18,2) en décimal(18,3).
Existe-t-il un moyen de modifier la précision d'une colonne décimale existante dans Sql Server ?
ALTER TABLE Testing ALTER COLUMN TestDec decimal(16,1)
Mettez juste decimal(precision, scale)
en remplaçant la précision et l'échelle par les valeurs que vous souhaitez.
Je n'ai pas effectué de tests 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.
Cela a fonctionné pour moi lorsque j'ai augmenté la précision d'un décimal(18,2) en décimal(18,3).
Si vous avez un nombre à 16 chiffres (au total) et que vous augmentez l'échelle, est-ce que les chiffres d'ordre supérieur seront supprimés pour faire de la place aux deux nouvelles décimales ? Malheureusement, je ne peux pas tester cela pour le moment.
Pour répondre à ma propre question, j'ai créé un sqlfiddle : sqlfiddle.com/#!3/4b8cb/1/0 . La réponse est que changer decimal(18,2) en decimal(18,3) entraînera une erreur lors de la modification de la table. decimal(18,2) en decimal(19,3) devrait cependant fonctionner.
Il existe peut-être un meilleur moyen, mais vous pouvez toujours copier la colonne dans une nouvelle colonne, la déposer et renommer la nouvelle colonne avec 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
Ceci a été testé sur SQL Server 2008 R2, mais devrait fonctionner sur SQL Server 2000+.
Dans Oracle 10G et les versions ultérieures, la déclaration suivante fonctionnera.
ALTER TABLE <TABLE_NAME> MODIFY <COLUMN_NAME> <DATA_TYPE>
Si le type de données actuel est NUMBER(5,2) et que vous voulez le changer en NUMBER(10,2), voici l'instruction
ALTER TABLE <TABLE_NAME> MODIFY <COLUMN_NAME> NUMBER(10,2)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.