字符勾通过分隔符转换为表
字符串通过分隔符转换为表
字符串为 1|1.1|2.2|3.3|4.4|5.5|6.2,2|1.2|2.2|3.2|4.5|5.7|6.3,3|1.5|2.6|3.5|4.4|5.9|6.5,4|1.5|2|3.5|4|5|6.9
转换为
id value1 value2 value3 value4 value5 value6
1 1.1 2.2 3.3 4.4 5.5 6.2
2 1.2 2.2 3.2 4.5 5.7 6.3
3 1.5 2.6 3.5 4.4 5.9 6.5
4 1.5 2 3.5 4 5 6.9
------解决方案--------------------
这个题目用 C# 似乎更容易吧。
------解决方案--------------------
------解决方案--------------------
字符串为 1|1.1|2.2|3.3|4.4|5.5|6.2,2|1.2|2.2|3.2|4.5|5.7|6.3,3|1.5|2.6|3.5|4.4|5.9|6.5,4|1.5|2|3.5|4|5|6.9
转换为
id value1 value2 value3 value4 value5 value6
1 1.1 2.2 3.3 4.4 5.5 6.2
2 1.2 2.2 3.2 4.5 5.7 6.3
3 1.5 2.6 3.5 4.4 5.9 6.5
4 1.5 2 3.5 4 5 6.9
高手
字符串拆分
------解决方案--------------------
这个题目用 C# 似乎更容易吧。
------解决方案--------------------
WITH a1 (msg) AS
(
SELECT '1
------解决方案--------------------
1.1
------解决方案--------------------
2.2
------解决方案--------------------
3.3
------解决方案--------------------
4.4
------解决方案--------------------
5.5
------解决方案--------------------
6.2,2
------解决方案--------------------
1.2
------解决方案--------------------
2.2
------解决方案--------------------
3.2
------解决方案--------------------
4.5
------解决方案--------------------
5.7
------解决方案--------------------
6.3,3
------解决方案--------------------
1.5
------解决方案--------------------
2.6
------解决方案--------------------
3.5
------解决方案--------------------
4.4
------解决方案--------------------
5.9
------解决方案--------------------
6.5,4
------解决方案--------------------
1.5
------解决方案--------------------
2
------解决方案--------------------
3.5
------解决方案--------------------
4
------解决方案--------------------
5
------解决方案--------------------
6.9'
)
,a2 AS
(
SELECT b.msg,ROW_NUMBER() OVER (ORDER BY GETDATE()) re
FROM
(SELECT msg=CONVERT(XML, '<root><v>'+replace(RTRIM(LTRIM(msg)),',','</v><v>')+'</v></root>') FROM a1) a
OUTER APPLY
(SELECT msg = C.v.value('.','NVARCHAR(MAX)') FROM a.msg.nodes('/root/v') C(v)) b
)
,a3 AS
(
SELECT a.re,b.msg,ROW_NUMBER() OVER (PARTITION BY a.re ORDER BY GETDATE()) re2
FROM
(SELECT re,msg=CONVERT(XML, '<root><v>'+replace(RTRIM(LTRIM(msg)),'
------解决方案--------------------
','</v><v>')+'</v></root>') FROM a2) a
OUTER APPLY
(SELECT msg = C.v.value('.','NVARCHAR(MAX)') FROM a.msg.nodes('/root/v') C(v)) b
)
SELECT [1] id,[2] value1 ,[3] value2,[4] value3,[5] value4,[6] value5,[7] value6
FROM a3
PIVOT (MAX(msg) FOR re2 IN ([1],[2],[3],[4],[5],[6],[7])) pvt
------解决方案--------------------