Vous pouvez essayer d'utiliser USING
:
L'option USING
clause spécifie comment calculer la nouvelle valeur de la colonne à partir de l'ancien; si omis, la valeur par défaut de conversion est le même qu'une cession projetée à partir de vieux type de données à nouveau. Un USING
clause doit être fournie si il n'y a pas d'implicite ou de la cession projetée à partir de l'ancien vers le nouveau type.
Donc, ce serait (selon vos données):
ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0) USING code::numeric;
Ceci ne fonctionnera pas si vous avez quelque chose en code
qui ne peut pas être converti en numérique; si l'AIDE ne parvient pas, vous aurez à nettoyer les données non numériques à la main avant de changer le type de la colonne.