Problema durante il tentativo di convertire un tipo di dati di colonna in pgAdmin da varchar a integer (stato SQL: 22P02)
Sto semplicemente cercando di convertire una colonna con il character varying
tipo di dati in integer
eseguendo 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
In base all'errore che ottieni, sembra che tu abbia alcuni valori XX
che 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 NOT
corrispondenza 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 XX
che non corrispondono a questo modello verranno recuperati e puoi capire come gestirli aggiornando la tabella o modificando la using
parte del tuo file alter table
.