2009-11-16 20 views
3

J'ai déjà rencontré la fonction de conversion. Si je comprends bien, la syntaxe de base est:Comment convertir les types de champs MySQL?

select convert(columnName, targetFieldType) as newColumnName from table; 

exécution de cette commande ne me donne pas d'erreur, mais quand je vérifie les types de données qu'ils ne sont pas modifiés. Même quand j'utilise commit; les données restent inchangées. En particulier, j'essaie de convertir des données avec un type long en varchar. Des idées?

Répondre

4

La requête SELECT donnée renvoie la valeur du nouveau type, mais ne modifie pas le type de champ de la table dans votre base de données.

Si vous souhaitez modifier en permanence la table sur le disque, utilisez:

ALTER TABLE table CHANGE columnName newColumnName targetFieldType NOT NULL; 

Notez que pour les grandes tables, cela peut prendre un certain temps, parce que MySQL réécrit la table entière.

Remarque: supprimez le qualificateur NOT NULL si vous souhaitez également autoriser les valeurs NULL dans cette colonne.

Pour plus d'informations, voir ALTER TABLE Syntax in MySQL Reference Manual.

1

Notez que vous pouvez convertir tout type de caractère facilement à l'aide CONCAT:

select concat(columnName,'') as newColumnName from table; 

La syntaxe réelle que vous voulez pour CONVERT est comme suit:

select convert(columnName, char) as newColumnName from table; 

Il n'y a pas de type varchar disponible pour CONVERT ou CAST, mais lancer en char sans donner la longueur du champ devrait être le résultat que vous voulez.