使用可能なデフォルトのキャストがないため、使用するキャストを定義する必要があります。
varcharColumn
のすべての値の場合 列挙型の定義に準拠すると、次のように機能するはずです。
alter table foo
ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
個人的には、列挙型は非常に柔軟性がないため、好きではありません。列の値を制限したい場合は、varchar列にチェック制約を設定することをお勧めします。または、値のリストが頻繁に変更されて大きくなる場合は、外部キー制約のある古き良き「ルックアップテーブル」。