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.
NULL
reste NULL
, 0
devient 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);