PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment changer le type de données de colonne de caractère à numérique dans PostgreSQL 8.4

Vous pouvez essayer d'utiliser USING :

L'option USING la clause spécifie comment calculer la nouvelle valeur de colonne à partir de l'ancienne ; s'il est omis, la conversion par défaut est identique à une conversion d'affectation de l'ancien type de données vers le nouveau. Un USING La clause doit être fournie s'il n'y a pas de transtypage implicite ou d'affectation de l'ancien vers le nouveau type.

Cela pourrait donc fonctionner (en fonction de vos données) :

alter table presales alter column code type numeric(10,0) using code::numeric;
-- Or if you prefer standard casting...
alter table presales alter column code type numeric(10,0) using cast(code as numeric);

Cela échouera si vous avez quelque chose dans code qui ne peut pas être converti en numérique ; si USING échoue, vous devrez nettoyer manuellement les données non numériques avant de modifier le type de colonne.