読者です 読者をやめる 読者になる 読者になる

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);

このエラーの原因、なんとなくわかるけど確証が持てないのでそこは言葉を濁しつつ。