Bermasalah mencoba mengonversi tipe data kolom di pgAdmin dari varchar ke integer (status SQL: 22P02)

Aug 16 2020

Saya hanya mencoba mengonversi kolom dengan character varyingtipe data menjadi integerdengan menjalankan sedikit skrip Postgres ini:

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

dan saya mendapatkan kesalahan ini:

EROR: sintaks masukan tidak valid untuk integer: "XX" Status SQL: 22P02

Bisakah seseorang membantu saya menyelesaikan masalah ini?

Jawaban

3 MikeOrganek Aug 16 2020 at 12:21

Berdasarkan kesalahan yang Anda dapatkan, sepertinya Anda memiliki beberapa nilai XXyang tidak dapat dikonversi menjadi file integer. Anda perlu mengoreksi nilai-nilai tersebut sebelum menerbitkan alter table.

Temukan nilai Anda yang salah dengan kueri ini:

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

Ini !~adalah NOTpertandingan regex. Jangkar regex ke awal nilai dengan ^, menyumbang tanda minus opsional dengan -{0,1}, yang cocok dengan nol atau satu karakter tanda hubung, lalu memastikan bahwa karakter yang tersisa di akhir nilai adalah semua digit dengan \d+$.

Nilai apa pun XXyang gagal untuk mencocokkan pola ini akan diambil, dan Anda dapat mencari cara untuk menanganinya baik dengan memperbarui tabel atau memodifikasi usingbagian alter table.