Twilo: MySQL: Teilstring auslesen

Hallo,

ich habe 3 Spalten

+-----------+-------------------------------------------+-------+
| localpart | home                                      | email |
+-----------+-------------------------------------------+-------+
| test1     | /home/popuser/popboxen/yyy.de/irgendetwas |       |
+-----------+-------------------------------------------+-------+
| test2     | /home/popuser/popboxen/xxx.de/irgendetwas |       |
+-----------+-------------------------------------------+-------+
| ...       | ...                                       |       |
+-----------+-------------------------------------------+-------+

ich müsste jetzt die Spalte email mit werten füllen

nachher soll soetwas bei rauskommen

+--------------+
| email        |
+--------------+
| test1@yyy.de |
+--------------+
| test2@xxx.de |
+--------------+

das heisst also
ich muss die Spalte "localport" nehmen, dahinter ein @ packen und dann aus der Spalte "home" ein Teilstring hinten dranpacken

wie muss ich das ganze angehen?
welche MySQL Befehle brauche ich dafür, damit ich schon mal etwas anfangen kann zu Grübeln ;-)

der Befehl soll auf alle Datensätze dieser Tabelle "pop3" angewendet werden

MySQL-Version: MySQL 4.0.22

das ganze muss ich nur einmal machen, ich könnte zwar alle Datensätze per Hand abändern, nur wäre das etwas viel Arbeit, da es ca. 1000 Datensätze sind.

mfg
Twilo

  1. das heisst also
    ich muss die Spalte "localport" nehmen, dahinter ein @ packen und dann aus der Spalte "home" ein Teilstring hinten dranpacken

    SELECT CONCAT_WS('@', localpart, SUBSTRING_INDEX(REPLACE(home, '/home/popuser/popboxen', ''), '/', 1)) AS email FROM tabelle;

    Das nächste Mal darfst du selbst auf www.mysql.com nachschauen.

    mfg

    Niki

    http://www.nobaq.net/

    1. Hallo,

      das heisst also
      ich muss die Spalte "localport" nehmen, dahinter ein @ packen und dann aus der Spalte "home" ein Teilstring hinten dranpacken

      SELECT CONCAT_WS('@', localpart, SUBSTRING_INDEX(REPLACE(home, '/home/popuser/popboxen', ''), '/', 1)) AS email FROM tabelle;

      Das nächste Mal darfst du selbst auf www.mysql.com nachschauen.

      ich ollte nicht gelich den ganzen MySQL Befehl haben, ich wuste nur nicht, wie ich den Teilstring herausbekomme

      trotzdem danke

      mfg
      Twilo

    2. Hallo,

      ich muss die Spalte "localport" nehmen, dahinter ein @ packen und dann aus der Spalte "home" ein Teilstring hinten dranpacken

      SELECT CONCAT_WS('@', localpart, SUBSTRING_INDEX(REPLACE(home, '/home/popuser/popboxen', ''), '/', 1)) AS email FROM tabelle;

      es kommt zwar nur sowas "test1@" bei raus, aber jetzt hab ich ja schon mal ein kleines Licht am Horizont ;)

      mfg
      Twilo

      1. Hallo,

        SELECT CONCAT_WS('@', localpart, SUBSTRING_INDEX(REPLACE(home, '/home/popuser/popboxen', ''), '/', 1)) AS email FROM tabelle;

        es kommt zwar nur sowas "test1@" bei raus, aber jetzt hab ich ja schon mal ein kleines Licht am Horizont ;)

        ich hab das soweit zum laufen bekommen

        SELECT CONCAT_WS( '@', localpart, SUBSTRING_INDEX(
        REPLACE (
        home,
        '/home/popuser/popboxen/',
        ''
        ), '/', 1 ) ) AS email
        FROM pop3

        nun hab ich nur folgendes Problem, dass mir zwar die Spalte "email" in phpMyAdmin ausgegeben wird, aber eien Änderung an dieser Spalte findet nicht statt.

        wenn ich da noch ein Update rumpacke, bekomme ich ein MySQL Error

        mfg
        Twilo

        1. hi,

          nun hab ich nur folgendes Problem, dass mir zwar die Spalte "email" in phpMyAdmin ausgegeben wird, aber eien Änderung an dieser Spalte findet nicht statt.

          das wäre ja auch noch schöner, wenn SELECT daten ändern würde ...

          wenn ich da noch ein Update rumpacke, bekomme ich ein MySQL Error

          einfach nur "rumpacken" reicht wohl nicht - da solltest du dich vielleicht schon mal um eine korrekte syntax bemühen ...

          ist also wieder mal zeit, dich wie schon Niki es tat, ans mysql-manual zu verweisen, würde ich sagen ;-)

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Hallo,

            nun hab ich nur folgendes Problem, dass mir zwar die Spalte "email" in phpMyAdmin ausgegeben wird, aber eien Änderung an dieser Spalte findet nicht statt.

            das wäre ja auch noch schöner, wenn SELECT daten ändern würde ...

            deshalb kam mir das auch zu einfach vor ;-)

            wenn ich da noch ein Update rumpacke, bekomme ich ein MySQL Error

            einfach nur "rumpacken" reicht wohl nicht - da solltest du dich vielleicht schon mal um eine korrekte syntax bemühen ...

            ist also wieder mal zeit, dich wie schon Niki es tat, ans mysql-manual zu verweisen, würde ich sagen ;-)

            ich würde es gerne Nachlesen, nur weiss ich nicht, wonach im im Manual suchen soll, bzw. in mein MySQL Buch

            ich lese immer das subselect's nicht funktionieren
            wenn das ein subselect ist, hat sich ja meien Suche schon erledigt ;-)
            ich gehe aber mal davon aus, dass es eien normale Select Anweisung in ein Update ist?!

            ich weiss hier leider nicht weiter :-/

            ich glaube ich greife doch zu PHP und mache es in Unterschiedlichen Abfragen

            mfg
            Twilo

            1. hi,

              ich würde es gerne Nachlesen, nur weiss ich nicht, wonach im im Manual suchen soll, bzw. in mein MySQL Buch

              einmal nach der syntax für UPDATE, und daneben noch nach den stringfunktionen.

              ich lese immer das subselect's nicht funktionieren
              wenn das ein subselect ist, hat sich ja meien Suche schon erledigt ;-)
              ich gehe aber mal davon aus, dass es eien normale Select Anweisung in ein Update ist?!

              nein, ein SELECT in einem UPDATE wäre - überraschung - ein subselect (sub = unter).

              ich glaube ich greife doch zu PHP und mache es in Unterschiedlichen Abfragen

              aber warum denn - du kannst doch innerhalb eines UPDATE auch auf den wert bezug nehmen, den eine spalte aktuell besitzt, bevor du ihr einen neuen wert zuweist.

              UPDATE tabelle SET textspalte = CONCAT(textspalte, 'blah')

              würde in jeder zeile an den inhalt von textspalte blah anhängen - jetzt musst du das nur noch auf deinen fall bzw. dein REPLACE-muster anpassen.

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."