Spalte varchar(50) dauerhaft in integer umwandeln

Hallo,

ich habe in einer Tabelle eine Spalte vom Typ varchar(50), die ich dauerhaft in integer umwandeln will. Die Einträge in dieser Spalte bestehen aus den Zahlen (im Moment als Zeichen) -1 bis +6.

In der Vergangenheit ging das mal mit dem folgenden Statement:

alter table data_standard_pitzer alter column dataclass type integer USING convertToInteger(dataclass);

In der Zwischenzeit wurde die Datenbank auf einen anderen Server migriert und auf Postgresql 8.3.8 aktualisiert. Ich arbeite mit phpPgAdmin 4.2.2.

Die Fehlermeldung:

FEHLER:  Funktion converttointeger(character varying) existiert nicht
HINT:  Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.

Wie bekommen ich denn eine solche Funktion in PostgreSQL hinein, bzw. wie könnte ich sie mir selbst erstellen?

Vielen Dank

Eremit



test=# create table xyz (i varchar(59));
CREATE TABLE
test=*# insert into xyz values ('   1   ');
INSERT 0 1
test=*# alter table xyz alter column i type int using i::int;
ALTER TABLE
test=*# select * from xyz;
 i
---
 1
(1 row)

test=*# \d xyz;
      Table "public.xyz"
 Column |  Type   | Modifiers
--------+---------+-----------
 i      | integer |

Ist 8.4.2, sollte aber in 8.3 auch so gehen.

Andreas

Geht auch in 8.3. Man bbraucht lediglich den expliziten Cast, da der implizite weggefallen ist.

Und natürlich müssen die Daten dem neuen Datentyp entsprechen - aber das ist ja wohl der Fall.

Yup… läuft durch.
Vielen Dank! :slight_smile:
Eremit

Danke, hat mir auch sehr geholfen.