SQL:拆分为新行相同的字段

时间:2018-05-24 03:32:01

标签: sql sql-server

如何在sql server语句的同一字段中拆分成新行? e.g:

storage;virtual;servername1, servername2, servername3

输出

storage; virtual; servername1
storage; virtual; servername2
storage; virtual; servername3

1 个答案:

答案 0 :(得分:0)

我觉得这很棘手,因为嵌套的分裂字符串。在SQL Server 2016中,这可以满足您的需求:

select v1.col1, v2.col2, ss.*
from (values ('storage;virtual;servername1, servername2, servername3')
     ) v(str) cross apply
     (values(left(v.str, charindex(';', v.str) - 1),
             stuff(v.str, 1, charindex(';', v.str), '')
            )
     ) v1(col1, rest1) cross apply
     (values(left(v1.rest1, charindex(';', v1.rest1) - 1),
             stuff(v1.rest1, 1, charindex(';', v1.rest1), '')
            )
     ) v2(col2, rest2) cross apply
     string_split(rest2, ',') ss;

MDN Docs是一个SQL小提琴。)

在早期版本中,您可以非常轻松地在网络上找到分割字符串功能。