首页 > 解决方案 > SQL Server - 通过从分隔符中识别来拆分多行的列值

问题描述

我有一个包含两列(ID、Email)和值的表,如下所示。

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

标签: sqlsql-servertsql

解决方案


对于 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

推荐阅读