Ergebnis 1 bis 3 von 3

Thema: SQL-Query: erstes Zeichen eines Strings in Tabellenfeld ändern falls Buchstabe

  1. #1
    spirit ist offline Neuer Benutzer
    Registriert seit
    23.02.2011
    Beiträge
    21

    Frage SQL-Query: erstes Zeichen eines Strings in Tabellenfeld ändern falls Buchstabe

    Hallo,

    ich habe eine Tabelle mit einer Spalte, die Strings (PostgreSQL Typ character varying) enthält. Diese Strings muss ich mit einem Query so ändern, dass der erste Character entfernt wird. Die Tabellenspalte sieht z.B. so aus:

    Code:
    A123
    A6435
    A345
    B123
    B33233
    B321
    Und nach dem Query sollte sie folgendermaßen aussehen:

    Code:
    123
    6435
    345
    123
    33233
    321
    Der Datentyp soll nicht geändert werden (ich möchte also nicht, dass das danach Daten vom Typ Integer sind, das ist nicht nötig).

    Ich habe auch schonmal Google bemüht und dabei das hier gefunden. Nach etwas Recherche für postgresql sieht mein Query jetzt also von der Shell aus so aus:

    Code:
    psql -U <user> -d <database> -c "UPDATE <table> SET <field> = substr(<field>, 2, char_length(<field>));"
    Noch schöner wäre es, wenn der erste Character nur dann entfernt würde, wenn er auch ein Buchstabe (a-zA-Z) ist -- so dass bei versehentlich doppelter Anwendung nicht aus dem Eintrag 123 der Eintrag 23 wird, denn das wäre fatal.

    Wir muss ich meinen Query verändern, um das zu erreichen?

    Vielen Dank im Voraus,
    spirit

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

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Hallo,

    ich habe eine Tabelle mit einer Spalte, die Strings (PostgreSQL Typ character varying) enthält. Diese Strings muss ich mit einem Query so ändern, dass der erste Character entfernt wird. Die Tabellenspalte sieht z.B. so aus:

    Code:
    A123
    A6435
    A345
    B123
    B33233
    B321
    Und nach dem Query sollte sie folgendermaßen aussehen:

    Code:
    123
    6435
    345
    123
    33233
    321
    Der Datentyp soll nicht geändert werden (ich möchte also nicht, dass das danach Daten vom Typ Integer sind, das ist nicht nötig).

    Ich habe auch schonmal Google bemüht und dabei das hier gefunden. Nach etwas Recherche für postgresql sieht mein Query jetzt also von der Shell aus so aus:

    Code:
    psql -U <user> -d <database> -c "UPDATE <table> SET <field> = substr(<field>, 2, char_length(<field>));"
    Noch schöner wäre es, wenn der erste Character nur dann entfernt würde, wenn er auch ein Buchstabe (a-zA-Z) ist -- so dass bei versehentlich doppelter Anwendung nicht aus dem Eintrag 123 der Eintrag 23 wird, denn das wäre fatal.

    Wir muss ich meinen Query verändern, um das zu erreichen?

    Vielen Dank im Voraus,
    Code:
    test=*# select * from spirit ;
      t
    ------
     A123
     B234
     0123
     AAA1
    (4 rows)
    
    test=*# update spirit set t = regexp_replace(t,'^[a-zA-Z]','') ;
    UPDATE 4
    test=*# select * from spirit ;
      t
    ------
     123
     234
     0123
     AA1
    (4 rows)
    
    test=*# update spirit set t = regexp_replace(t,'^[a-zA-Z]','') ;
    UPDATE 4
    test=*# select * from spirit ;
      t
    ------
     123
     234
     0123
     A1
    (4 rows)
    
    test=*# update spirit set t = regexp_replace(t,'^[a-zA-Z]','') ;
    UPDATE 4
    test=*# select * from spirit ;
      t
    ------
     123
     234
     0123
     1
    (4 rows)
    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
    spirit ist offline Neuer Benutzer
    Registriert seit
    23.02.2011
    Beiträge
    21

    Standard

    Wow, genau das, was ich gesucht habe. Vielen, vielen Dank!
    spirit

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 11.07.2011, 18:40
  2. Datentyp eines eigenen Typs ändern
    Von rolf.schaufelberger im Forum SQL
    Antworten: 7
    Letzter Beitrag: 25.01.2011, 09:54
  3. Antworten: 3
    Letzter Beitrag: 26.05.2009, 08:52
  4. dblink und strings
    Von richard_lavoie im Forum Allgemeines
    Antworten: 2
    Letzter Beitrag: 01.03.2007, 12:19
  5. Strings ersetzen über PG?
    Von Sy- im Forum Allgemeines
    Antworten: 6
    Letzter Beitrag: 09.01.2006, 14:19

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