sql - 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
解决方案
对于 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
推荐阅读
- excel - VBA to Auto 从手动选择的起始位置选择一个范围
- python - 如何使用请求库来抓取已抓取的链接列表
- fpga - 如何将未使用的封装引脚连接到 Spartan 3E FPGA 上的 VCC?
- reactjs - 何时使用 useImperativeHandle、useLayoutEffect 和 useDebugValue
- docker - 如何通过 docker 从领事值设置容器参数?
- r - 返回与模糊匹配匹配的单词向量
- ios - 如何在 3D 模型的折叠中打开(显示)深度阴影?
- javascript - 调用openTextDocument时如何禁用切换到资源管理器活动栏?代码
- html - 如何创建html模板并在JS中使用
- python - pandas execute operations on conditions - different ways and best practice?