PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Modifica il tipo di dati della colonna da Testo a Intero in PostgreSQL

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) ;