【问题标题】:split comma separated emails into different columns将逗号分隔的电子邮件拆分为不同的列
【发布时间】:2019-02-28 01:14:17
【问题描述】:

我在一个表中有一组用户的一组数据。数据是 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

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

这里,决赛桌应该是这样的

  • email1 : xyzabcdef123@gmail.com
  • email2:helloworld56@gmail.com
  • email3 : ihaveemail@gmail.com
  • email4 : gojkl8823@gmail.com

我尝试了一些东西,但没有到达那里。有人可以帮帮我吗?

【问题讨论】:

  • 我删除了 MySQL 标签,因为它似乎更有可能是“意外”。但是,您应该确认您真正使用的数据库。
  • 您确定要列吗?作为列返回会将您限制为一定数量的条目
  • 我在想列会让我更容易阅读和分析数据,另外我需要将电子邮件与其他一些列匹配。
  • 我建议在将 json 数据导入 BigQuery 之前对其进行转换。也许使用 Dataflow 或 Dataprep。

标签: sql google-bigquery


【解决方案1】:

试试string_Split函数

select STRING_SPLIT ( Emailcolumn , ',')  from email

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) <> '';  

【讨论】:

  • 给出错误:找不到函数:STRING_SPLIT
  • STRING_SPLIT是系统函数,你用的是什么版本的SQL server?
  • 我在这里使用 BigQuery
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2018-11-02
  • 2018-09-25
  • 2012-05-21
相关资源
最近更新 更多