SQL Server-通过分隔符来标识多行的列值

时间:2019-05-07 10:36:05

标签: sql sql-server tsql

我有一个表,其中包含两列(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

1 个答案:

答案 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