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. UnUSING
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.