Split one long comma string into multi column new table

前端 未结 3 1831
情书的邮戳
情书的邮戳 2021-01-27 12:14

I am newish to SQL to please excuse any ignorance. I have a table, called \'temp\' that contains one Field with one long comma seperated string, thus:

Field1
Ap         


        
3条回答
  •  忘掉有多难
    2021-01-27 12:51

    Try this

    ;WITH Split_Fields (Field, xmlfields)
    AS
    (
        SELECT Field1 AS Field,
        CONVERT(XML,''  
        + REPLACE(Field1,',', '') + '') AS xmlfields
          FROM Table1
    )
    
     SELECT Field,      
     xmlfields.value('/Fields[1]/field[1]','varchar(100)') AS Field1,    
     xmlfields.value('/Fields[1]/field[2]','varchar(100)') AS Field2,
     xmlfields.value('/Fields[1]/field[3]','varchar(100)') AS Field3,    
     xmlfields.value('/Fields[1]/field[4]','varchar(100)') AS Field4,
     xmlfields.value('/Fields[1]/field[5]','varchar(100)') AS Field5
     FROM Split_Fields
    

    SQLFiddle Demo

    OR

    SELECT Field,
    xmlfields.value('/Fields[1]/field[1]','varchar(100)') AS Field1, 
    xmlfields.value('/Fields[1]/field[2]','varchar(100)') AS Field2, 
    xmlfields.value('/Fields[1]/field[3]','varchar(100)') AS Field3, 
    xmlfields.value('/Fields[1]/field[4]','varchar(100)') AS Field4, 
    xmlfields.value('/Fields[1]/field[5]','varchar(100)') AS Field5 
    FROM 
    (
    SELECT 
    Field1 AS Field
    ,CONVERT(XML,'' + REPLACE(Field1,',', '') + '') AS xmlfields 
    FROM Table1
    ) Split_Fields
    

    To insert into another table (ex: Detail) try below

    ;WITH Split_Fields (Field, xmlfields)
    AS
    ( 
    SELECT 
    Field1 AS Field
    ,CONVERT(XML,'' + REPLACE(Field1,',', '') + '') AS xmlfields 
    FROM Table1
    ) 
    
    INSERT INTO Detail
    SELECT 
    xmlfields.value('/Fields[1]/field[1]','varchar(100)') AS Field1, 
    xmlfields.value('/Fields[1]/field[2]','varchar(100)') AS Field2, 
    xmlfields.value('/Fields[1]/field[3]','varchar(100)') AS Field3, 
    xmlfields.value('/Fields[1]/field[4]','varchar(100)') AS Field4, 
    xmlfields.value('/Fields[1]/field[5]','varchar(100)') AS Field5 
    FROM Split_Fields
    

提交回复
热议问题