SQL funktion Mailadresse in einem DB-Feld in Vor und Nachnahmen trenne
Hallo,
Ich möchte in meiner DB in der Spalte Mailadressen die Adressen trennen in
3 verschiedene Felder.
z.B. die Mailadresse hans.mayer@mail.de sollte das
vor dem Punkt in die Spalte Vorname und das hinter dem
Punkt in die Spalte Nachnamen.
Da gibt es aber auch Adressen ohne Punkt die sollte dann in eine andere Spalte
Sonstige.
Kann mir da jemand Helfen wie man so etwas macht.
Gruß
Helmut
Ich möchte in meiner DB in der Spalte Mailadressen die Adressen trennen in
3 verschiedene Felder.
z.B. die Mailadresse hans.mayer@mail.de sollte das
vor dem Punkt in die Spalte Vorname und das hinter dem
Punkt in die Spalte Nachnamen.
Da gibt es aber auch Adressen ohne Punkt die sollte dann in eine andere Spalte
Sonstige.
Kann mir da jemand Helfen wie man so etwas macht.
Gruß
Helmut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 276660
Url: https://administrator.de/forum/sql-funktion-mailadresse-in-einem-db-feld-in-vor-und-nachnahmen-trenne-276660.html
Ausgedruckt am: 23.12.2024 um 04:12 Uhr
9 Kommentare
Neuester Kommentar
Moin
Nun eine Möglichkeit währe es zb mit PHP.
Jeden Datensatz einzelnd auslesen,
Testen ob ein Punkt vor dem @ steht,
Daten in deine Spalte eintragen.
Infos gibts zb auch bei www.phpbox.de sowie zahlreiche andere Seiten.
Es würde sicherlich auch mit SQL direckt gehen oder eine andere Programiersprache deiner Wahl.
Nun eine Möglichkeit währe es zb mit PHP.
Jeden Datensatz einzelnd auslesen,
Testen ob ein Punkt vor dem @ steht,
Daten in deine Spalte eintragen.
Infos gibts zb auch bei www.phpbox.de sowie zahlreiche andere Seiten.
Es würde sicherlich auch mit SQL direckt gehen oder eine andere Programiersprache deiner Wahl.
Hallo Helmut,
das ist eigentlich nicht sonderlich schwer. Das Zauberwort heißt reguläre Ausdrücke.
In Oracle könntest Du es folgendermaßen lösen.
Geht bestimmt noch etwas eleganter
G Jörg
das ist eigentlich nicht sonderlich schwer. Das Zauberwort heißt reguläre Ausdrücke.
In Oracle könntest Du es folgendermaßen lösen.
SELECT REGEXP_SUBSTR('j_o-2.m1xys-de_n@gruetze.de', '^[0-9a-z._-]*') Komplett,
REGEXP_SUBSTR('j_o-2.m1xys-de_n@gruetze.de', '^[0-9a-z_-]*') VorPunkt,
SUBSTR(REGEXP_SUBSTR('j_o-2.m1xys-de_n@gruetze.de', '\.[0-9a-z_-]*'),2) NachPunkt
FROM DUAL;
Geht bestimmt noch etwas eleganter
G Jörg
... klar geht es auch ohne reguläre Ausdrücke. Ich finde das nur recht elegant.
Andere Möglichkeit mit Stringfunktionen in Oracle.
Wenn man drüber nachdenkt kommt man bestimmt noch auf andere Varianten.
G Jörg
Andere Möglichkeit mit Stringfunktionen in Oracle.
SELECT i.TmpStr Komplett,
SUBSTR(i.TmpStr, 1, INSTR(i.TmpStr, '.', 1, 1) - 1) VorPunkt,
SUBSTR(i.TmpStr, INSTR(i.TmpStr, '.', 1, 1) + 1) NachPunkt
FROM (SELECT SUBSTR('j_o-2.m1xys-de_n@gruetze.de',1, INSTR('j_o-2.m1xys-de_n@gruetze.de', '@',1,1) -1) TmpStr FROM DUAL) i
Wenn man drüber nachdenkt kommt man bestimmt noch auf andere Varianten.
G Jörg
Hallo,
dann müsste der Lösungsansatz mit den String--Funktionen seit Informix 11.7 1:1 laufen.
Wenn man dann noch SUBSTRING_INDEX hinzunimmt kann man das ganze auch folgendermaßen lösen:
G Jörg
dann müsste der Lösungsansatz mit den String--Funktionen seit Informix 11.7 1:1 laufen.
Wenn man dann noch SUBSTRING_INDEX hinzunimmt kann man das ganze auch folgendermaßen lösen:
SELECT SUBSTRING_INDEX('j_o-2.m1xys-de_n@gruetze.de', '@', 1) Komplett,
SUBSTRING_INDEX('j_o-2.m1xys-de_n@gruetze.de', '.', 1) VorPunkt,
SUBSTR(SUBSTRING_INDEX('j_o-2.m1xys-de_n@gruetze.de', '@', 1),
INSTR('j_o-2.m1xys-de_n@gruetze.de', '.', 1, 1) + 1) NachPunkt
FROM dual;
G Jörg