pgAdminの列データ型をvarcharから整数に変換しようとして問題が発生しました(SQL状態:22P02)

Aug 16 2020

Postgresスクリプトのこのビットを実行して、character varyingデータ型の列をに変換しようとしていintegerます。

ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);

そして私はこのエラーを受け取ります:

エラー:整数の入力構文が無効です: "XX" SQL状態:22P02

誰かがこの問題を解決するのを手伝ってもらえますか?

回答

3 MikeOrganek Aug 16 2020 at 12:21

取得したエラーに基づいて、XXに変換できない値が含まれているように見えますinteger。を発行する前に、これらの値を修正する必要がありますalter table

このクエリで間違った値を見つけます。

select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';

これ!~NOT正規表現の一致です。正規表現は、で値の先頭に固定され、0または1つのハイフン文字に一致^するオプションのマイナス記号であるを考慮し-{0,1}、値の末尾までの残りの文字がすべて\d+$。で桁になるようにします。

XXこのパターンに一致しない値はすべて取得され、テーブルを更新するか、のusing一部を変更することで、それらの処理方法を理解できますalter table