pgAdminの列データ型をvarcharから整数に変換しようとして問題が発生しました(SQL状態:22P02)
Postgresスクリプトのこのビットを実行して、character varying
データ型の列をに変換しようとしていinteger
ます。
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
そして私はこのエラーを受け取ります:
エラー:整数の入力構文が無効です: "XX" SQL状態:22P02
誰かがこの問題を解決するのを手伝ってもらえますか?
回答
3 MikeOrganek
取得したエラーに基づいて、XX
に変換できない値が含まれているように見えますinteger
。を発行する前に、これらの値を修正する必要がありますalter table
。
このクエリで間違った値を見つけます。
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
これ!~
はNOT
正規表現の一致です。正規表現は、で値の先頭に固定され、0または1つのハイフン文字に一致^
するオプションのマイナス記号であるを考慮し-{0,1}
、値の末尾までの残りの文字がすべて\d+$
。で桁になるようにします。
XX
このパターンに一致しない値はすべて取得され、テーブルを更新するか、のusing
一部を変更することで、それらの処理方法を理解できますalter table
。