web-dev-qa-db-fra.com

Comment changer le type de données d'une colonne dans une table SQL d'un entier en décimal

J'ai attribué le type de données d'une des colonnes d'une table que j'ai créée en tant que int. Mon problème est qu'il n'affiche pas de décimales lorsque j'exécute une requête contre lui.

Comment puis-je corriger le type de données de cette colonne afin qu'elle accepte les décimales?

Le tableau est dbo.Budget et la colonne concernée s'appelle ROE.

13
user3115933

Facile - il suffit d'exécuter cette instruction SQL

ALTER TABLE dbo.Budget
ALTER COLUMN ROE DECIMAL(20,2)   -- or whatever precision and scale you need.....

Consultez la documentation de MSDN disponible gratuitement sur la précision, l'échelle et la longueur en nombres décimaux et les plages de valeurs. possible

20
marc_s

Juste pour que cela soit clairement énoncé:

S'il n'y a pas de données dans le tableau, ou pas beaucoup, alors le simple ALTER TABLE déclaration (comme décrit dans les autres réponses ici) est très bien.

Mais, s'il y a beaucoup de données (des millions de lignes, ou peut-être moins selon la taille de la table) et/ou beaucoup de conflits sur la table et pas beaucoup d'opportunité pour une fenêtre complète de temps d'arrêt/maintenance, alors cela nécessite une approche différente, comme celle que j'ai décrite dans cette réponse: Rétrécissement des types de données sur une très grande table .

2
Solomon Rutzky

Modifier le type de données de cette colonne ..Mais en général, sql ne permet pas de changer. Il vous invite à supprimer cette colonne .. Il y a un paramètre pour atteindre cette chose.
Accédez à Tool-Option-designers-Table et Database designers et décochez l'option Prevent save. Je prends abt sql server 2008R2 enter image description here

1

Vous pouvez exécuter cette simple instruction sql

Alter table yourtable
Alter Column yourtable_column Decimal(10,2)

vous pouvez définir la précision décimale et mettre à l'échelle tout ce dont vous avez besoin.

0
HaveNoDisplayName