PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Alterar o tipo de dados da coluna de texto para inteiro no 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

Você pode ver na tabela acima que eu usei o tipo de dados – character varying para id coluna. Mas foi um erro porque estou sempre dando integers como id . Então, usando varchar aqui é uma má prática. Então vamos tentar mudar o tipo de coluna para integer .
ALTER TABLE test ALTER COLUMN id TYPE integer;

Mas retorna:

Isso significa que não podemos simplesmente alterar o tipo de dados porque os dados já estão na coluna. Como os dados são do tipo character varying O Postgres não pode esperar isso como um número inteiro, embora tenhamos inserido apenas números inteiros. Então agora, como o Postgres sugeriu, podemos usar o USING expressão para converter nossos dados em números inteiros.
ALTER TABLE test ALTER COLUMN id  TYPE integer USING (id::integer);

Funciona.

Então você deve usar
alter table a.attend alter column terminal TYPE INTEGER  USING (terminal::integer) ;