Ответ 1
Вы можете попробовать USING
:
Необязательное предложение
USING
указывает, как вычислить новое значение столбца из старого; если опустить, преобразование по умолчанию такое же, как присваивание от старого типа данных к новому. ПредложениеUSING
должно быть предоставлено, если нет неявного или присваиваемого приведения от старого к новому типу.
Таким образом, это может работать (в зависимости от ваших данных):
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
, которое нельзя отнести к числовому; если ИСПОЛЬЗОВАНИЕ завершается с ошибкой, вам необходимо очистить нечисловые данные вручную, прежде чем изменять тип столбца.