2017-11-29 17 views
0

Hallo, ich bin neu in SQL und Ich bin nicht sicher, ob es möglich ist, wie untenSQL aufgeteilt Zeileninhalt auf mehrere Zeilen

ich eine Zeile wie dieses:

abc,xyz; bcd,ddd; qqq,eee 

Ich möchte schreiben eine Abfrage, die die Zeile in mehreren Zeilen wie folgt aufgeteilt werden:

abc,xyz 
bcd,ddd 
qqq,eee 

Zeilen 1, 2 oder 3 Namen oder null enthalten können, ist es nicht festgelegt.

Wie kann ich das tun?

+0

Schauen Sie sich diese https://stackoverflow.com/questions/697519/split-function-equivalent-in-t-sql Statt dem Komma das Trennzeichen ist, Ihr wäre ein Semikolon. Abhängig von der Kompatibilitätsstufe, die in Ihrem DB festgelegt wurde. String_split funktioniert möglicherweise auch – Harry

Antwort

0
SELECT STRING_SPLIT (fieldname, '; ') 
FROM tablename 

oder vielleicht wollen Sie ein CROSS JOIN

SELECT z.field_a, z.field_b, x.VALUE 
FROM tablename as z 
CROSS JOIN (SELECT VALUE FROM STRING_SPLIT (z.fieldname, '; ')) AS x 

oder vielleicht wollen Sie ein CROSS APPLY

dies lesen: https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql

+0

Es sieht aus wie das OP SQL Server 2008 oder 2012 verwendet, STRING_SPLIT nur in SQL Server 2016 angekommen, soweit ich weiß. –

+0

@AlanSchofield - es gibt eine Million Implementierungen einer String-Split-Funktion, die mit einer mächtigen Websuche verfügbar sind. Die XML-Analyse von Yogesh könnte in einigen Fällen schneller sein (und viele Implementierungen verwenden sie.) – Hogan

+0

Ich verstehe, dass, ohne dass das OP eine UDF erstellen müsste, ich nur den Punkt geklärt habe. –

1

einige XML Knoten Methoden versuchen, die Ihre Comma Separated Value drehen würde in mehrere Reihen

SELECT 
     LTRIM(a.value('.', 'NVARCHAR(MAX)')) [Data] FROM 
(
    SELECT CAST('<M>'+REPLACE(<column>, ';', '</M><M>')+'</M>' AS XML) AS DATA from <table_name> 
) A CROSS APPLY DATA.nodes('/M') as split(a) 

Ergebnis:

abc,xyz 
bcd,ddd 
qqq,eee 
+0

Dies ist eine altmodische Art, das XML-Parsing in SQL zu nutzen. Sie können dies auch in einer String-Split-Funktion für den allgemeinen Gebrauch bündeln. – Hogan

+0

Danke, es hat funktioniert –

Verwandte Themen