Probleme beim Konvertieren eines Spaltendatentyps in pgAdmin von varchar in integer (SQL-Status: 22P02)
Ich versuche einfach, eine Spalte mit character varying
Datentyp zu konvertieren , integer
indem ich dieses Bit des Postgres-Skripts ausführe:
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
und ich bekomme diesen Fehler:
FEHLER: Ungültige Eingabesyntax für Ganzzahl: "XX" SQL-Status: 22P02
Kann mir bitte jemand helfen, dieses Problem zu lösen?
Antworten
Basierend auf dem Fehler, den Sie erhalten, sieht es so aus, als hätten Sie einige Werte XX
, die nicht in einen konvertiert werden können integer
. Sie müssen diese Werte korrigieren, bevor Sie die ausgeben alter table
.
Finden Sie Ihre falschen Werte mit dieser Abfrage:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
Das !~
ist das NOT
Regex-Match. Der Regex, der am Anfang des Werts mit verankert ist ^
, berücksichtigt ein optionales Minuszeichen mit -{0,1}
, das mit null oder einem Bindestrich übereinstimmt, und stellt dann sicher, dass die verbleibenden Zeichen am Ende des Werts alle Ziffern mit sind \d+$
.
Alle Werte XX
, die nicht mit diesem Muster übereinstimmen, werden abgerufen, und Sie können herausfinden, wie Sie damit umgehen sollen, indem Sie entweder die Tabelle aktualisieren oder den using
Teil Ihres Musters ändern alter table
.