我有一个包含用户电子邮件(帐户)的表,另一个包含一个临时电子邮件地址域列表(垃圾邮件发送者)。
id | email
----+-------------------------
1 | test111122@example.com
2 | test1111223@example.com
3 | test@sharklasers.com
id | domain
-----+-----------------------------------------
1 | 0-mail.com
2 | 0815.ru
3 | sharklasers.com
id | email
----+-------------------------
3 | test@sharklasers.com
如何获取“帐户”表中来自垃圾邮件发送者的所有电子邮件?
我知道有许多接受的电子邮件格式,但目前我只对“标准”格式感兴趣。
谢谢!
答案 0 :(得分:1)
弗兰克施密特有正确的想法,虽然他的方法有点过于宽松,因为它没有考虑到电子邮件中'@'
字符的位置。例如,请考虑spam.com
是垃圾邮件域。 Frank的查询将捕获来自该域的任何电子邮件,但会抓住完全合法的notspam.com
域中的任何用户。
使用类似regexp_replace
的内容来确定域名可以解决此问题:
SELECT email
FROM users u
JOIN spammers s ON s.domain = REGEXP_REPLACE(u.email, '.*@', '')
<强> SQLFiddle 强>
答案 1 :(得分:0)
您可以使用简单的JOIN
进行LIKE
搜索(添加@以避免误报,正如@Mureinik所指出的那样):
select email from users u
join spammers s
on u.email like '%@' || s.domain;