MySQL: Teilstring auslesen
Twilo
- datenbank
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
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
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
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
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
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
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
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