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
Можете да видите от горната таблица, че съм използвал типа данни – character varying
за id
колона. Но беше грешка, защото винаги давам integers
като id
. И така, използвайки varchar
ето една лоша практика. Така че нека се опитаме да променим типа на колоната на integer
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Но връща:
Това означава, че не можем просто да променим типа данни, защото данните вече са там в колоната. Тъй като данните са от тип character varying
Postgres не може да го очаква като цяло число, въпреки че въведохме само цели числа. Така че сега, както предложи Postgres, можем да използваме USING
израз за преобразуване на нашите данни в цели числа.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Работи.
Така че трябва да използвате
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;