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,並導致無數痛苦的工作。 –