Bermasalah mencoba mengonversi tipe data kolom di pgAdmin dari varchar ke integer (status SQL: 22P02)
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
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.