Можете да опитате да използвате USING
:
Незадължителният
USING
клауза определя как да се изчисли новата стойност на колона от старата; ако се пропусне, преобразуването по подразбиране е същото като присвояване, прехвърлено от стар тип данни към нов. AUSING
клауза трябва да бъде предоставена, ако няма имплицитно или присвояване, прехвърлено от стар към нов тип.
Така че това може да работи (в зависимост от вашите данни):
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);
Това ще се провали, ако имате нещо в code
които не могат да бъдат прехвърлени към числови; ако USING не успее, ще трябва да почистите нечисловите данни на ръка, преди да промените типа колона.