Comment changer le type de données de colonne dans la base de données SQL sans perdre de données

J'ai une base de données SQL Server et je viens de réaliser que je peux changer le type de l'une des colonnes de int à bool.

Comment puis-je le faire sans perdre les données déjà entrées dans cette table?

160
demandé sur DineshDB 2011-02-28 00:14:22

9 réponses

Vous pouvez facilement le faire en utilisant la commande suivante. Toute valeur de 0 sera transformée en 0 (BIT = false), tout le reste sera transformé en 1 (BIT = true).

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

L'autre option serait de créer une nouvelle colonne de type BIT, remplir à partir de l'ancienne colonne, et une fois que vous avez terminé, chute de l'ancienne colonne et renommer le nouveau à l'ancien nom. De cette façon, si quelque chose pendant la conversion va mal, vous pouvez toujours revenir en arrière puisque vous avez toujours toutes les données..

270
répondu marc_s 2011-02-27 21:28:17

S'il s'agit d'une modification valide.

Vous pouvez modifier la propriété.

Outils - > Options - > concepteurs - > concepteurs de tables et de bases de données - > décocher - > empêcher l'enregistrement des modifications nécessitant une recréation de table.

Maintenant, vous pouvez facilement changer le nom de la colonne sans recréer la table ou perdre des enregistrements u r.

13
répondu Sathish 2018-04-10 10:50:57
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

Remarque: si la taille des colonnes, il suffit d'écrire la taille aussi.

10
répondu Xyed Xain Haider 2018-04-15 19:35:26

Pourquoi pensez-vous que vous allez perdre des données? Allez simplement dans Management Studio et modifiez le type de données. Si la valeur existante peut être convertie en bool (bit), elle le fera. En d'autres termes, si "1" correspond à true et "0" à false dans votre champ d'origine, tout ira bien.

7
répondu Philippe Leybaert 2011-02-27 21:19:59

Allez dans Tool-Option-designers-concepteurs de tables et de bases de données et décochez L'option Empêcher l'enregistremententrez la description de l'image ici

3
répondu saktiprasad swain 2017-05-31 06:05:34

Si vous utilisez T-SQL (MSSQL); vous devriez essayer ce script:

ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)

Si vous utilisez MySQL; vous devriez essayer ce script:

ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)

Si vous utilisez Oracle; vous devriez essayer ce script:

ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
2
répondu NullException 2017-09-21 13:32:37

En édition compacte prendra automatiquement la taille pour le type de données datetime, c'est-à-dire (8), donc pas besoin de définir la taille du champ et de générer une erreur pour cette opération...

0
répondu Hardik 2016-07-07 07:34:13

Je peux modifier le type de données du champ table, avec la requête suivante: et aussi dans la base de données Oracle,

ALTER TABLE table_name
MODIFY column_name datatype;
-2
répondu Ismayil S 2017-06-20 05:25:07

Remplacer le type de données sans perdre de données

alter table tablename modify columnn  newdatatype(size);
-3
répondu user7743491 2017-03-21 09:05:03