2017-05-05 1 views
0
declare @v varchar(max) = '1,11,111,1111' 

Ich brauche Ausgabe wie folgt (in getrennten Linien):Wie erhalten Sie zweite, dritte und weitere Werte aus einer Zeichenfolge mit Feldern, die durch Kommas getrennt sind?

1 
    11 
    111 
1111 

Ich bin in der Lage, die ersten und die letzten zu erhalten mit:

select Substring(@v,0,CharIndex(',',@v)) 
    select substring(@v, CHARINDEX(',', @v, CHARINDEX(',', @v, CHARINDEX(',', @v)+1)+1)+1, len(@v)) 

Aber, wie kann ich den zweiter bekommen und dritte Teilstrings getrennt?

Antwort

1

Sie ersetzen können ...

declare @v varchar(max) = '1,11,111,1111' 
select replace(@v,',',' ') 

Wenn Sie suchen für mehrere Zeilen dann

--For SQL Server >= 2016 
select * from string_split(@v,',') 

--For any version of sql server 
DECLARE @xml as xml 
SET @xml = cast(('<X>'+replace(@v,',' ,'</X><X>')+'</X>') as xml) 
SELECT N.value('.', 'varchar(MAX)') as value FROM @xml.nodes('X') as T(N) 
+0

ich brauche eigentlich eine Ausgabe wie erste Zeile 1, zweite Zeile 11, die dritte Linie 111, die vierte Zeile 1111 – money

+0

welche Version von SQL Server? –

+0

SQL-Server 2012 – money

Verwandte Themen