sql >> Base de Datos >  >> RDS >> PostgreSQL

Cambiar el tipo de datos de la columna de texto a entero en 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

Puede ver en la tabla anterior que he usado el tipo de datos:character varying para id columna. Pero fue un error porque siempre estoy dando integers como id . Entonces usando varchar aquí hay una mala práctica. Así que intentemos cambiar el tipo de columna a integer .

ALTER TABLE test ALTER COLUMN id TYPE integer;

Pero vuelve:

Eso significa que no podemos simplemente cambiar el tipo de datos porque los datos ya están en la columna. Dado que los datos son de tipo character varying Postgres no puede esperarlo como un número entero, aunque solo ingresamos números enteros. Así que ahora, como sugirió Postgres, podemos usar el USING expresión para convertir nuestros datos en enteros.

ALTER TABLE test ALTER COLUMN id  TYPE integer USING (id::integer);

Funciona.

Entonces deberías usar

alter table a.attend alter column terminal TYPE INTEGER  USING (terminal::integer) ;