Probleme beim Konvertieren eines Spaltendatentyps in pgAdmin von varchar in integer (SQL-Status: 22P02)

Aug 16 2020

Ich versuche einfach, eine Spalte mit character varyingDatentyp zu konvertieren , integerindem 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

3 MikeOrganek Aug 16 2020 at 12:21

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 NOTRegex-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 usingTeil Ihres Musters ändern alter table.