0
我 “How to split a comma-separated value to columns” 得到了相同/相似的问题,但我的解决方案的代码需要更加灵活。如何拆分逗号分隔的多个值,它是成列的新列
我得到了逗号分隔值的多个(N)列。 EG:
Column1 Column2
======================
a1, a2, a3 er, asw, as
a2, a3 qwe, qw
我现在需要的是这样的
Column1_1 Column1_2 Columm1_3 Column2_1 Column2_2 Column2_3
==================================================================
a1 a2 a3 er asw as
a2 a3 NULL qwe qw NULL
所以取决于列的“最长”(大多数用英文逗号分隔值),我需要使用相同的名称和索引(这里的新栏目1-3)。如果一个单元格小于最大值(例如,在这种情况下为2),则剩余的新列不应包含任何空值的值。
我希望有人能帮助我!
非常感谢!编号:
我试过使用这段代码。它的工作原理,到目前为止,但其不灵活,只有采取一列,而不是“N列”
DECLARE @xml xml
SELECT @xml = (
SELECT CAST(
'<i id="' + CAST(COLUMN1 as nvarchar(10)) + '"><w>' + REPLACE(NID,' ','</w> <w>') + '</w></i>' as xml)
FROM table4
FOR XML PATH('')
)
SELECT
t.v.value('w[1]','nvarchar(100)') as String1,
t.v.value('w[2]','nvarchar(100)') as String2,
t.v.value('w[3]','nvarchar(100)') as String3,
t.v.value('w[4]','nvarchar(100)') as String4,
t.v.value('w[5]','nvarchar(100)') as String5,
t.v.value('w[6]','nvarchar(100)') as String6,
t.v.value('w[7]','nvarchar(100)') as String7
FROM @xml.nodes('/i') as t(v)
你尝试过什么来解决这个问题?你有一个好的起点,那么什么让你失望? – dfundako
在您的列中计算逗号以查找最大值。添加到剩余逗号的列。之后,请联系你的两栏,并使用你的链接中描述的方法。 – xdd
希望这是一个正常化项目。如果没有,你需要阅读规范化,因为存储这样的分隔数据违反了1NF,并导致无数痛苦的工作。 –