Bermasalah mencoba mengonversi tipe data kolom di pgAdmin dari varchar ke integer (status SQL: 22P02)
Saya hanya mencoba mengonversi kolom dengan character varying
tipe data menjadi integer
dengan 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 XX
yang 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 NOT
pertandingan 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 XX
yang gagal untuk mencocokkan pola ini akan diambil, dan Anda dapat mencari cara untuk menanganinya baik dengan memperbarui tabel atau memodifikasi using
bagian alter table
.