2017-03-11 28 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)