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
Du kan se fra ovenstående tabel, at jeg har brugt datatypen – character varying
for id
kolonne. Men det var en fejl, fordi jeg altid giver integers
som id
. Så ved at bruge varchar
her er en dårlig praksis. Så lad os prøve at ændre kolonnetypen til integers
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Men det returnerer:
Det betyder, at vi ikke bare kan ændre datatypen, fordi data allerede er der i kolonnen. Da dataene er af typen character varying
Postgres kan ikke forvente det som heltal, selvom vi kun indtastede heltal. Så nu, som Postgres foreslog, kan vi bruge USING
udtryk for at støbe vores data til heltal.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Det virker.
Så du bør bruge
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;