create table test(id varchar );
insert into test values('1');
insert into test values('11');
insert into test values('12');
select * from test
--Result--
id
character varying
--------------------------
1
11
12
Puoi vedere dalla tabella sopra che ho usato il tipo di dati - character varying
per id
colonna. Ma è stato un errore perché do sempre integers
come id
. Quindi usando varchar
ecco una cattiva pratica. Quindi proviamo a cambiare il tipo di colonna in integer
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Ma ritorna:
Ciò significa che non possiamo semplicemente modificare il tipo di dati perché i dati sono già presenti nella colonna. Poiché i dati sono di tipo character varying
Postgres non può aspettarselo come intero anche se abbiamo inserito solo numeri interi. Quindi ora, come suggerito da Postgres, possiamo usare USING
espressione per trasformare i nostri dati in numeri interi.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Funziona.
Quindi dovresti usare
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;