PgAdmin'deki bir sütun veri türünü varchar'dan tam sayıya dönüştürmeye çalışırken sorunlu (SQL durumu: 22P02)
character varying
Veri türüne sahip bir sütunu, integer
bu Postgres komut dosyasını çalıştırarak dönüştürmeye çalışıyorum :
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
ve şu hatayı alıyorum:
HATA: tamsayı için geçersiz giriş sözdizimi: "XX" SQL durumu: 22P02
Birisi bu sorunu çözmeme yardım edebilir mi lütfen?
Yanıtlar
Aldığınız hataya dayanarak, XX
bir integer
. .Düzenlemeden önce bu değerleri düzeltmeniz gerekecektir alter table
.
Bu sorgu ile yanlış değerlerinizi bulun:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
!~
Olduğu NOT
regex maç. Normal ifade ile değerin başlangıcına ^
tutturulur -{0,1}
, sıfır veya bir kısa çizgi karakteriyle eşleşen isteğe bağlı bir eksi işaretini hesaba katar ve ardından değerin sonuna kadar kalan karakterlerin tümünün rakamlarla olmasını sağlar \d+$
.
Herhangi değerler XX
bu model alınır maç için başarısız ve masa güncelleyerek veya değiştirerek ya onlarla nasıl başa anlayabiliriz using
, aramalarınızdan parçasını alter table
.