SQL alter colonne de type de données de type nvarchar à int
Pouvez le type de données d'un champ modifié pour int de type nvarchar??
alter table employee alter column designation int
est-ce valable?? Si non, peut-il être fait d'une autre façon??
P. S: je suis en utilisant MS SQL Server
- Avez-vous l'essayer?
- Oui je l'ai fait. Il a donné un message d'erreur indiquant ne peut pas convertir varchar int. Je suis en train de voir si il y a d'une certaine façon par le biais de fonte statememt.
- Cela signifie que vous avez une ou plusieurs valeurs actuellement stockés dans cette colonne ne peut pas être convertie à
int
- vous besoin pour nettoyer les données avant de procéder à la conversion.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer de faire un alter table. Si elle ne parvient pas à le faire:
ALTER TABLE tableName ADD newCol int;
UPDATE tableName SET newCol = CAST(oldCol AS int) FROM tableName;
Il est possible que lorsque vous colonne n'a pas de valeur ou de vide. Si votre colonne a une certaine valeur, qui ont valeur nvarchar et vous devriez essayer de le convertir en int, il va donner à l'erreur.
CREATE TABLE employee(designation NVARCHAR(10));INSERT INTO employee VALUES (N'10');alter table employee alter column designation int
fonctionne très bien.Cela a fonctionné pour moi (avec décimales, mais je suppose qu'il va travailler avec ints):
Peut faire encore plus simple en seulement 2 étapes
Mise à jour de la colonne et de définir tous les non numberic valeurs null altère ne manqueront pas.
Modifier la table et définissez le type int.
Cela prend l'hypothèse que les colonnes autoriser les valeurs null. Si non, alors qui doit être traité ainsi. Par exemple: Par la modification de la colonne à autoriser les valeurs null, puis, après, il a été converti en int alors définir toutes les valeurs null à 0 et modifier la table pour ne pas autoriser les valeurs null
Créer un temp colonne
ALTER TABLE MYTABLE ADD MYNEWCOLUMN NUMBER(20,0) NULL;
Copie et jette les données de l'ancienne colonne de la nouvelle
UPDATE MYTABLE SET MYNEWCOLUMN=CAST(MYOLDCOLUMN AS NUMBER(20,0));
Supprimer l'ancienne colonne
ALTER TABLE MYTABLE DROP COLUMN MYOLDCOLUMN;
Renommer le nouveau le match le même nom que l'ancien.
ALTER TABLE MYTABLE RENAME COLUMN MYNEWCOLUMN TO MYOLDCOLUMN;
Pouvez-vous essayer cela ?