PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ändern Sie den Spaltendatentyp von Text in Integer in 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

Sie können aus der obigen Tabelle ersehen, dass ich den Datentyp – character varying verwendet habe für id Säule. Aber es war ein Fehler, weil ich immer integers gebe als id . Also mit varchar hier ist eine schlechte Praxis. Versuchen wir also, den Spaltentyp in integer zu ändern .

ALTER TABLE test ALTER COLUMN id TYPE integer;

Aber es gibt zurück:

Das bedeutet, dass wir den Datentyp nicht einfach ändern können, da Daten bereits in der Spalte vorhanden sind. Da die Daten vom Typ character varying sind Postgres kann es nicht als Ganzzahl erwarten, obwohl wir nur Ganzzahlen eingegeben haben. Also, wie Postgres vorgeschlagen hat, können wir jetzt den USING verwenden Ausdruck, um unsere Daten in Ganzzahlen umzuwandeln.

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

Es funktioniert.

Sie sollten also

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