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
W powyższej tabeli widać, że użyłem typu danych – character varying
dla id
kolumna. Ale to był błąd, ponieważ zawsze podaję integers
jako id
. Więc używając varchar
oto zła praktyka. Spróbujmy więc zmienić typ kolumny na integer
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Ale zwraca:
Oznacza to, że nie możemy po prostu zmienić typu danych, ponieważ dane są już w kolumnie. Ponieważ dane są typu character varying
Postgres nie może oczekiwać, że będzie to liczba całkowita, chociaż wprowadziliśmy tylko liczby całkowite. Więc teraz, jak zasugerował Postgres, możemy użyć USING
wyrażenie do rzutowania naszych danych na liczby całkowite.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
To działa.
Powinieneś więc użyć
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;