将逗号分隔的电子邮件分为不同的列

时间:2018-09-24 13:45:20

标签: sql google-bigquery

我在表中有一组用于一组用户的数据。数据为JSON格式,我必须从那里提取数据。

有一个数据集,电子邮件包含该用户的多封电子邮件。有些用户有4封电子邮件,而其他用户没有3、2、1甚至没有。

数据的格式为:

{"androidId":"49ca9d8934c67a03","deviceId":"863177039120979","emails":"xyzabcdef123@gmail.com,helloworld56@gmail.com,ihaveemail@gmail.com,gojkl8823@gmail.com","manufacturer":"LENOVO","name":"Lenovo A6020a40","networkOperator1Id1":"405854"}

所以首先我要从JSON提取数据,得到的结果为

emails:xyzabcdef123@gmail.com,helloworld56@gmail.com,ihaveemail@gmail.com,gojkl8823@gmail.com

但是现在我需要将这些电子邮件相应地分为几列。

在这里,决赛桌应该是

  • 电子邮件1:xyzabcdef123@gmail.com
  • 电子邮件2:helloworld56@gmail.com
  • 电子邮件3:ihaveemail@gmail.com
  • 电子邮件4:gojkl8823@gmail.com

我已经尝试了一些方法,但没有达到目标。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

尝试使用string_Split函数

select STRING_SPLIT ( Emailcolumn , ',')  from email

ex

DECLARE @emails NVARCHAR(400) = 'me@aol.com,you@prodigy.com,him@zebra.net,that@compuserve.com,her@juno.com'  

SELECT value  as EmailAddress
FROM STRING_SPLIT(@emails , ',')  
WHERE RTRIM(value) <> '';