我有一堆客户数据,正在试图在Big Query中找到一种方法来提取电子邮件域名(例如test@yahoo.com中的yahoo.com),但是我使用普通SQL尝试的任何尝试似乎都不起作用,因为它们不支持CHARINDEX,而任何子字符串只能基于数字值创建。
有人有任何想法吗?
谢谢,
Matt
我有一堆客户数据,正在试图在Big Query中找到一种方法来提取电子邮件域名(例如test@yahoo.com中的yahoo.com),但是我使用普通SQL尝试的任何尝试似乎都不起作用,因为它们不支持CHARINDEX,而任何子字符串只能基于数字值创建。
有人有任何想法吗?
谢谢,
Matt
你可以使用 REGEXP_EXTRACT
函数 --
SELECT REGEXP_EXTRACT('matt@yahoo.com', r'@(.+)');
将会给出 'yahoo.com'。
SPLIT(email_address, '@')[SAFE_OFFSET(1)] as domain
declare @email varchar(50) ='Abcxyz@subdomain.domain.com';
SELECT SUBSTRING(@email, CHARINDEX('@', @email) + 1, LEN(@email) - CHARINDEX('@', @email) + 1) AS domain_name
Output 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
如果你不想要 ".com",我认为这是最好的选择。
SELECT REGEXP_EXTRACT("matt@yahoo.com", "@(\\w+)") AS domain;
只会给你"yahoo"
SAFE_OFFSET
。 - iDrwish