我有大量的客户数据,我正试图在Big Query中找到一种方法来提取电子邮件域(例如yahoo.com,例如来自test@yahoo.com)但是我尝试过任何尝试使用普通SQL制作似乎不起作用,因为它们不支持CHARINDEX,而任何子字符串只能基于数值创建。
有没有人对如何做到这一点有任何想法?
干杯,
马特
答案 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
答案 2 :(得分:0)
我认为这是迄今为止最简单的:
SPLIT(email_address, '@')[OFFSET(1)] as domain