Puedes intentar usar USING
:
La USING
cláusula opcional especifica cómo calcular el nuevo valor de columna a partir del anterior; si se omite, la conversión predeterminada es la misma que una asignación emitida del tipo de datos antiguo a nuevo. Se USING
debe proporcionar una cláusula si no hay conversión implícita o de asignación del tipo antiguo al nuevo.
Entonces esto podría funcionar (dependiendo de sus 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 code
que no se puede convertir a numérico; Si el uso falla, tendrá que limpiar los datos no numéricos a mano antes de cambiar el tipo de columna.