如何从Google Big Query中的电子邮件地址中提取电子邮件域

时间:2014-06-10 16:32:24

标签: sql email google-bigquery

我有大量的客户数据,我正试图在Big Query中找到一种方法来提取电子邮件域(例如yahoo.com,例如来自test@yahoo.com)但是我尝试过任何尝试使用普通SQL制作似乎不起作用,因为它们不支持CHARINDEX,而任何子字符串只能基于数值创建。

有没有人对如何做到这一点有任何想法?

干杯,

马特

3 个答案:

答案 0 :(得分:7)

您可以使用REGEXP_EXTRACT功能 -

SELECT REGEXP_EXTRACT('matt@yahoo.com', r'@(.+)');

会给予#yahoo.com'。

答案 1 :(得分:0)

这是sql查询可能会帮助您解决问题。

declare @email varchar(50) ='Abcxyz@subdomain.domain.com';
SELECT SUBSTRING(@email, CHARINDEX('@', @email) + 1, LEN(@email) - CHARINDEX('@', @email) + 1) AS domain_name

输出 subdomain.domain.com

DECLARE @var varchar(50) ='test@subdoamin.domain.com';
SELECT 
SUBSTRING(@var,0,charindex('@',@var)) as UserName,
Substring(@var,charindex('@',@var)+1,charindex('.',@var,charindex('@',@var,0))-(charindex('@',@var)+1)) as SubDomain,
substring(@var,charindex('.',@var,charindex('@',@var))+1,len(@var)) as DomainName

输出 enter image description here

答案 2 :(得分:0)

我认为这是迄今为止最简单的:

SPLIT(email_address, '@')[OFFSET(1)] as domain