Puedes intentar usar USING
:
El USING
opcional cláusula especifica cómo calcular el valor de la nueva columna a partir de la antigua; si se omite, la conversión predeterminada es la misma que una conversión de asignación del tipo de datos antiguo al nuevo. A USING
se debe proporcionar la cláusula si no hay conversión implícita o de asignación del tipo antiguo al nuevo.
Así que esto podría funcionar (dependiendo de tus datos):
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);
Esto fallará si tiene algo en code
que no se puede convertir a numérico; si USING falla, tendrá que limpiar los datos no numéricos a mano antes de cambiar el tipo de columna.