我有一个表,其中包含两列(ID,电子邮件)和值,如下所示。
ID |email
1 |abc@gmail.lk;efg@gmail.lk;rrr@hotmail.com
2 |xyz@gmail.com;eee@gmail.lk
问题是我需要使用sql server检索以下那些值。
ID |email
1 abc@gmail.lk
1 efg@gmail.lk
1 rrr@hotmail.com
2 xyz@gmail.com
2 eee@gmail.lk
答案 0 :(得分:2)
对于sql server 2016或> 2016
with cte as
(
select 1 as id, 'abc@gmail.lk;efg@gmail.lk;rrr@hotmail.com' as email
union all
select 2 ,'xyz@gmail.com;eee@gmail.lk'
) select id,value from cte CROSS APPLY STRING_SPLIT(email, ';');
id value
1 abc@gmail.lk
1 efg@gmail.lk
1 rrr@hotmail.com
2 xyz@gmail.com
2 eee@gmail.lk