首页 > 解决方案 > 如何使用 sql select 语句从 url 或电子邮件中提取域?

问题描述

我想要的是只提取域,而不提取顶级域。

我有两个字段,电子邮件和网站。使用两个不同的 sql SELECT 语句,每个字段一个,我想创建两个新字段,EmailDomain 和 WebsiteDomain。

网站中的字段示例:

电子邮件中的值示例:

在上面的所有示例中,我希望结果仅为“域”(或“示例”)。

我已经测试并提出了一些几乎可以完成工作的语句,但它们并没有修复所有示例,它们仍然拥有顶级域。

到目前为止,我所拥有的是:

SELECT Account.website, REGEXP_REPLACE (Account.website, '(http[s]?://)?(www\\.)?(.*?)((/|:)(.)*|$)', '\\3') AS `WebsiteDomain` FROM Account

SELECT Leads.email, REGEXP_REPLACE (Leads.email, '^.*@([^\\.]+)\\.\\w+','\\1') AS `EmailDomain` FROM Leads

标签: sqlemailselectgoogle-bigqueryregexp-replace

解决方案


考虑下面

select website, regexp_replace(net.reg_domain(website), '.' || net.public_suffix(website) || '$', '') 
from `project.dataset.table`   

如果应用于您问题中的样本数据 - 输出是

在此处输入图像描述

您应该能够将相同的应用到电子邮件字段


推荐阅读