PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Changer le type de données de la colonne de texte à entier dans 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

Vous pouvez voir dans le tableau ci-dessus que j'ai utilisé le type de données - character varying pour id colonne. Mais c'était une erreur car je donne toujours des integers comme id . Donc, en utilisant varchar voici une mauvaise pratique. Essayons donc de changer le type de colonne en integer .

ALTER TABLE test ALTER COLUMN id TYPE integer;

Mais ça revient :

Cela signifie que nous ne pouvons pas simplement changer le type de données car les données sont déjà présentes dans la colonne. Puisque les données sont de type character varying Postgres ne peut pas s'attendre à ce qu'il soit un entier bien que nous n'ayons entré que des entiers. Alors maintenant, comme Postgres l'a suggéré, nous pouvons utiliser le USING expression pour convertir nos données en nombres entiers.

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

Ça marche.

Vous devez donc utiliser

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