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) ;