Puoi provare a utilizzare USING
:
Il USING
facoltativo la clausola specifica come calcolare il nuovo valore della colonna dal vecchio; se omessa, la conversione predefinita è la stessa di un cast di assegnazione dal vecchio tipo di dati al nuovo. Un USING
la clausola deve essere fornita se non è presente un cast implicito o di assegnazione dal vecchio al nuovo tipo.
Quindi questo potrebbe funzionare (a seconda dei tuoi dati):
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);
Questo fallirà se hai qualcosa in code
che non può essere convertito in numerico; se USING fallisce, dovrai ripulire manualmente i dati non numerici prima di modificare il tipo di colonna.