sql - 将逗号分隔的电子邮件拆分为不同的列
问题描述
我在表中有一组用户的一组数据。数据是 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
- email3 : ihaveemail@gmail.com
- 电子邮件 4:gojkl8823@gmail.com
我尝试了一些事情,但没有到达那里。有人可以帮我吗?
解决方案
试试 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) <> '';