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
に何かがあると、これは失敗します 数値にキャストすることはできません。 USINGが失敗した場合は、列タイプを変更する前に、数値以外のデータを手動でクリーンアップする必要があります。