如何从 url 或带有 sql select 语句的电子邮件中提取域?
How can I extract the domain from an url or email with a sql select statement?
我要的是只提取域名,不提取顶级域名。
我有两个字段,电子邮件和网站。使用两个不同的 sql SELECT 语句,每个字段一个,我想创建两个新字段,EmailDomain 和 WebsiteDomain。
网站中的字段示例:
- https://www.example.com/index.html
- test.domain.com
- domain.com
- www.domain.co.uk
- domain.se
- 等等
电子邮件中的值示例:
- 姓名@domain.stormgeo.com
- 姓名@domain.com
- 姓名@test.domain.com
- 姓名@domain.co.uk
- 等等
在上面的所有示例中,我希望结果仅为“域”(或“示例”)。
我已经测试并提出了一些几乎可以完成工作的陈述,但它们并没有修复所有的例子,它们仍然有顶级域。
我目前拥有的是:
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
考虑以下
select website, regexp_replace(net.reg_domain(website), '.' || net.public_suffix(website) || '$', '')
from `project.dataset.table`
如果应用于您问题中的示例数据 - 输出为
您应该能够将相同的应用到电子邮件字段
我要的是只提取域名,不提取顶级域名。
我有两个字段,电子邮件和网站。使用两个不同的 sql SELECT 语句,每个字段一个,我想创建两个新字段,EmailDomain 和 WebsiteDomain。
网站中的字段示例:
- https://www.example.com/index.html
- test.domain.com
- domain.com
- www.domain.co.uk
- domain.se
- 等等
电子邮件中的值示例:
- 姓名@domain.stormgeo.com
- 姓名@domain.com
- 姓名@test.domain.com
- 姓名@domain.co.uk
- 等等
在上面的所有示例中,我希望结果仅为“域”(或“示例”)。
我已经测试并提出了一些几乎可以完成工作的陈述,但它们并没有修复所有的例子,它们仍然有顶级域。
我目前拥有的是:
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
考虑以下
select website, regexp_replace(net.reg_domain(website), '.' || net.public_suffix(website) || '$', '')
from `project.dataset.table`
如果应用于您问题中的示例数据 - 输出为
您应该能够将相同的应用到电子邮件字段