如何在sql server语句的同一字段中拆分成新行? e.g:
storage;virtual;servername1, servername2, servername3
输出
storage; virtual; servername1
storage; virtual; servername2
storage; virtual; servername3
答案 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小提琴。)
在早期版本中,您可以非常轻松地在网络上找到分割字符串功能。