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 från tabellen ovan att jag har använt datatypen – character varying
för id
kolumn. Men det var ett misstag eftersom jag alltid ger integers
som id
. Så använder varchar
här är en dålig praxis. Så låt oss försöka ändra kolumntypen till integers
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Men den returnerar:
Det betyder att vi inte bara kan ändra datatypen eftersom data redan finns där i kolumnen. Eftersom data är av typen character varying
Postgres kan inte förvänta sig det som heltal även om vi bara angav heltal. Så nu, som Postgres föreslog, kan vi använda USING
uttryck för att gjuta våra data till heltal.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Det fungerar.
Så du bör använda
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;