Problema durante il tentativo di convertire un tipo di dati di colonna in pgAdmin da varchar a integer (stato SQL: 22P02)

Aug 16 2020

Sto semplicemente cercando di convertire una colonna con il character varyingtipo di dati in integereseguendo questo bit di script Postgres:

ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);

e ottengo questo errore:

ERRORE: sintassi di input non valida per il numero intero: "XX" Stato SQL: 22P02

Qualcuno può aiutarmi a risolvere questo problema, per favore?

Risposte

3 MikeOrganek Aug 16 2020 at 12:21

In base all'errore che ottieni, sembra che tu abbia alcuni valori XXche non possono essere convertiti in un file integer. Sarà necessario correggere questi valori prima di emettere il file alter table.

Trova i tuoi valori errati con questa query:

select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';

Questa !~è la NOTcorrispondenza regolare. L'espressione regolare si ancora all'inizio del valore con ^, rappresenta un segno meno opzionale con -{0,1}, che corrisponde a zero o un carattere trattino, e quindi assicura che i caratteri rimanenti alla fine del valore siano tutti cifre con \d+$.

Tutti i valori XXche non corrispondono a questo modello verranno recuperati e puoi capire come gestirli aggiornando la tabella o modificando la usingparte del tuo file alter table.