PostgreSQLで管理するカラムの型変換(CAST)に関するメモ
作業メモです。近い将来同じミスで嵌まることが容易に想像できるので、見える落とし穴は潰しておく。
一般的なキャスト
ALTER TABLE句を使います。
ALTER TABLE tablename ALTER COLUMN columnname TYPE hoge;
hogeの部分は指定したい型を記します。intとかvarchaerとかですね。この記述で概ね問題ないんですが、時々エラーで止まります。エラーメッセージは以下のようなものです。
ERROR: column "huga" cannot be cast automatically to type integer HINT: Specify a USING expression to perform the conversion.
「エラー:カラムhugaは自動的に整数型(integer)にキャストすることはできません。ヒント:変更を実行するためにUSING句を使用しましょう。」
指示に従って粛々と実行
対応
上述のクエリにUSING句を追加します。
ALTER TABLE tablename ALTER COLUMN columnname TYPE int USING(columnname::INTEGER);
このエラーの原因、なんとなくわかるけど確証が持てないのでそこは言葉を濁しつつ。