Herusfiltern von Informationen aus einem Feld

settusblake

Neuer Benutzer
Beiträge
1
Hallo allerseits!

ich habe ein Feld Value in einer Tabelle in der Informationen zu einem Massenmail gespeichert werden. In diesem Feld steht die gesamte E-Mail drin. Unter anderem auch die E-Mail Adresse des Empfängers.
In einer anderen Tabelle habe ich die User inkl. E-Mail drin stehen. Gibt es eine Möglichkeit, die E-Mail Adresse aus dem Feld Value raus zu filtern und dann mit der Tabelle Users zu joinen?

lg
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.612
Hallo allerseits!

ich habe ein Feld Value in einer Tabelle in der Informationen zu einem Massenmail gespeichert werden. In diesem Feld steht die gesamte E-Mail drin. Unter anderem auch die E-Mail Adresse des Empfängers.
In einer anderen Tabelle habe ich die User inkl. E-Mail drin stehen. Gibt es eine Möglichkeit, die E-Mail Adresse aus dem Feld Value raus zu filtern und dann mit der Tabelle Users zu joinen?

lg


Ganz schlechte Idee, die Du vergessen solltest. Normalisiere stattdessen Deine Tabellen.

Du hast:
Code:
test=*# select * from foo1;
id |                          t
----+-------------------------------------------------------
  1 | belangloser text mit einer mail@adresse.tld drin
  2 | noch so ein schrottiger datensatz fue ziel@domain.tld
(2 rows)
 
test=*# select * from foo2;
id |      mail
----+------------------
  1 | mail@adresse.tld
  2 | ziel@domain.tld
(2 rows)

Lösung:

Code:
test=*# select bla.*, foo2.* from (select * from (select id, regexp_split_to_table(t,E'\\s+') r from foo1) bla where r ~ '@') bla left join foo2 on bla.r=foo2.mail;
id |        r        | id |      mail
----+------------------+----+------------------
  1 | mail@adresse.tld |  1 | mail@adresse.tld
  2 | ziel@domain.tld  |  2 | ziel@domain.tld
(2 rows)

Versuch lieber nicht zu verstehen, wie das geht, und auch nicht, es mit MySQL nachzubauen ;-)
 
Oben