Você pode tentar usar
USING
:
O opcionalUSING
cláusula especifica como calcular o novo valor da coluna a partir do antigo; se omitido, a conversão padrão é a mesma que uma conversão de atribuição do tipo de dados antigo para o novo. AUSING
A cláusula deve ser fornecida se não houver 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 em
code
que não pode ser convertido em numérico; se o USING falhar, você terá que limpar os dados não numéricos manualmente antes de alterar o tipo de coluna.