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 qui sont déjà entrées dans ce tableau?
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 qui sont déjà entrées dans ce tableau?
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, de la remplir à partir de l'ancienne colonne, et une fois que vous avez terminé, déposez l'ancienne colonne et renommez la nouvelle en l'ancien nom. De cette façon, si quelque chose se passe mal pendant la conversion, vous pouvez toujours revenir en arrière car vous avez toujours toutes les données.
NULLreste NULL, 0devient False, des valeurs non nulles (1, -1, 1999, -987 ...) deviennent True.
                    ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Remarque: s'il y a une taille de colonnes, écrivez simplement la taille également.
S'il s'agit d'un changement valide.
vous pouvez changer 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 vos enregistrements ur.
Pourquoi pensez-vous que vous perdrez des données? Accédez simplement à 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 à vrai et "0" correspond à faux dans votre champ d'origine, tout ira bien.
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)
              Modifier le type de données de la colonne avec vérifier le type de colonne:
IF EXISTS(
       SELECT 1
       FROM   sys.columns
       WHERE  NAME = 'YourColumnName'
              AND [object_id] = OBJECT_ID('dbo.YourTable')
              AND TYPE_NAME(system_type_id) = 'int'
   )
    ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
              pour moi, dans sql server 2016, je le fais comme ça
* Pour renommer la colonne Colonne1 en colonne2
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
* Pour modifier le type de colonne de la chaîne à l' int : ( veuillez vous assurer que les données sont au format correct )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 
              Remplacez le type de données sans perdre de données
alter table tablename modify columnn  newdatatype(size);