动态逗号将字符串分隔到不同的列

时间:2017-03-11 09:07:05

标签: sql sql-server

有人可以帮我解决这个奇怪的情况。我有一个如下数据。

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,'01233625418,1223822583,125985' UNION ALL
      SELECT 5,'2089840022,9.99021E+13'

我试图为每个逗号值放入单独的列。列的最大数量取决于最大的逗号分隔字符串。

预期产出

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

1 个答案:

答案 0 :(得分: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)