-3
分開我有一個表,我需要對數據進行分離,以多列:如何從1列,多列的SQL Server
"Site Name","PJ.143 USJ 1| 2A (MP)","PMAC ID:","0067","Channel No:","01"
如何從1列分隔的多個列中的SQL Server?
謝謝。
分開我有一個表,我需要對數據進行分離,以多列:如何從1列,多列的SQL Server
"Site Name","PJ.143 USJ 1| 2A (MP)","PMAC ID:","0067","Channel No:","01"
如何從1列分隔的多個列中的SQL Server?
謝謝。
這種方法不需要分流/解析UDF
例
Declare @YourTable table (ID int,SomeColumn varchar(max))
Insert Into @YourTable values
(1,'"Site Name","PJ.143 USJ 1| 2A (MP)","PMAC ID:","0067","Channel No:","01"')
Select A.ID
,Col1 = max(case when RetSeq=2 then RetVal end)
,Col2 = max(case when RetSeq=4 then RetVal end)
,Col3 = max(case when RetSeq=6 then RetVal end)
From @YourTable A
Cross Apply (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>' + replace((Select replace(replace(A.SomeColumn,'"',''),',','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as X
Cross Apply x.nodes('x') AS B(i)
) B
Group By A.ID
返回
ID Col1 Col2 Col3
1 PJ.143 USJ 1| 2A (MP) 0067 01
感謝它的作品 –
@mohdnizam對它的幫助感到高興。 –
*不*首先存儲值這樣的。這打破了第一範式併產生了很多問題,例如,索引這樣的列或者更新它是不可能的。 –
請分享預期的輸出 – TheGameiswar
您可以在SQL Server 2016及更高版本中使用[STRING_SPLIT](https://msdn.microsoft.com/en-us/library/mt684588.aspx)函數。 –