Ergebnis 1 bis 5 von 5

Thema: Spalte varchar(50) dauerhaft in integer umwandeln

  1. #1
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Standard 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:

    Code:
    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:

    Code:
    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

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von eremit Beitrag anzeigen
    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:

    Code:
    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:

    Code:
    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
    Code:
    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
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Ist 8.4.2, sollte aber in 8.3 auch so gehen.
    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.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  4. #4
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Lächeln

    Yup... läuft durch.
    Vielen Dank!
    Eremit

  5. #5
    conrado ist offline Neuer Benutzer
    Registriert seit
    12.05.2010
    Beiträge
    1

    Standard

    Danke, hat mir auch sehr geholfen.

Ähnliche Themen

  1. Funktion nicht verfügbar min(integer, integer)
    Von karl_ha im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 26.07.2011, 12:29
  2. psql client_encoding dauerhaft auf 'win1252' setzen
    Von majcho im Forum Konfiguration
    Antworten: 6
    Letzter Beitrag: 08.12.2010, 22:55
  3. utf8-db in Latin1 umwandeln
    Von Kai-Behncke im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 28.07.2010, 18:48
  4. Antworten: 7
    Letzter Beitrag: 15.06.2009, 16:59
  5. Wie Arrays in Zeilen umwandeln?
    Von sigra im Forum SQL
    Antworten: 1
    Letzter Beitrag: 03.11.2008, 12:10

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum