2017-03-11 29 views
1

可能有人請幫我解決這個奇怪的場景。我有一個數據如下。動態逗號分隔成不同列的字符串

DECLARE @TABLE TABLE 
     (
     ID INT, 
     PHONE001 VARCHAR(500) 
     ) 
     INSERT TEST 
     SELECT 1,'01323840261,01323844711' UNION ALL 
     SELECT 2,'' UNION ALL 
     SELECT 3,',01476862000' UNION ALL 
     SELECT 4,',1223822583,125985' UNION ALL 
     SELECT 5,'2089840022,9.99021E+13' 

我想爲每個逗號值分隔列。最大列數取決於最大的逗號分隔字符串。

預期輸出

1|01323840261|01323844711|'' 
2|''|''|'' 
3|01476862000|''|''| 
4||1223822583|125985| 
5|2089840022|9.99021E+13|''| 
+0

你的問題是不是真的清楚。此外,發佈代碼和問題沒有意義。澄清更多的是你想要做的 – Rahul

回答

1

嘗試

select id,T.c.value('t[1]','varchar(50)') as col1, 
    T.c.value('t[2]','varchar(50)') as col2 , 
    T.c.value('t[3]','varchar(50)') as col3 from 
    (select id,cast ('<t>'+ replace(PHONE001,',','</t><t>') +'</t>' 
     as xml) x 
     from @TABLE) a cross apply x.nodes('.') t(c)