2017-04-12 6 views
-3

Quelltabelle aufgeteilt:wie das Komma getrennt Wert in Spalten

Value |name 

1  |clar,alwin,antony,rinu,dami,prince 

erwartete Ausgabe:

Value | name1 | name2 | name3 | name4 | name5 | name6 
1  | clar | alwin | antony | rinu | dami | prince 

diese Abfrage versucht:

Select Substring(name, 1,Charindex(',', name1) as name1, 
Substring(name,1, Charindex(',', name)+1, LEN(name)) as name2, 
Substring(name, Charindex(',', name)+2, LEN(name)) as name3, 
Substring(name, Charindex(',', name)+3, LEN(name)) as name4 
from tablename; 
+1

wurde schon oft gefragt, vielleicht versuchen Sie es zu suchen ?! – Tanner

+0

hast du selbst danach gesucht (ich bin nicht der Downvoter). –

Antwort

1
first create function to split values 

create function [dbo].[udf_splitstring] (@tokens varchar(max), 
            @delimiter varchar(5)) 
returns @split table (
    token varchar(200) not null) 
as 



    begin 

     declare @list xml 

     select @list = cast('<a>' 
          + replace(@tokens, @delimiter, '</a><a>') 
          + '</a>' as xml) 

     insert into @split 
        (token) 
     select ltrim(t.value('.', 'varchar(200)')) as data 
     from @list.nodes('/a') as x(t) 

     return 

    end 

SELECT 
max(CASE WHEN TOKEN='CLAR' THEN TOKEN END) 'NAME1' , 
max(CASE WHEN TOKEN='ALWIN' THEN TOKEN END) 'NAME2', 
max(CASE WHEN TOKEN='ANTONY' THEN TOKEN END) 'NAME3', 
max(CASE WHEN TOKEN='RINU' THEN TOKEN END) 'NAME4', 
max(CASE WHEN TOKEN='DAMI' THEN TOKEN END) 'NAME5', 
max(CASE WHEN TOKEN='PRINCE' THEN TOKEN END) 'NAME6' 
FROM #Table1 as t1 
CROSS APPLY [dbo].UDF_SPLITSTRING(name,',') as t2 

Ausgang

NAME1 NAME2 NAME3 NAME4 NAME5 NAME6 
clar alwin antony rinu dami prince 
1

IDK wenn diese Ihnen helfen, aber das ist, wie ich
PS meine csv-Dateien organisiert: accourding auf Ihre Daten

Wert, name1, name2, name3, name4, name5, name6
0 , clar, Alwin, antony, rinu, dami, prinz


Und wenn ich byulk einfügen verwenden Sie nur

sagen müssen
Verwandte Themen