Você pode tentar usar USING
:
A USING
cláusula opcional especifica como calcular o novo valor da coluna do antigo; se omitido, a conversão padrão é igual a uma conversão de atribuição do tipo de dados antigo para o novo. Uma USING
cláusula deve ser fornecida se não houver uma conversão implícita ou de atribuição do tipo antigo para o novo.
Portanto, isso pode funcionar (dependendo dos seus dados):
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);
Isso falhará se você tiver algo code
que não possa ser convertido em numérico; se USING falhar, você deverá limpar manualmente os dados não numéricos antes de alterar o tipo de coluna.