Ich weiß, es ist eine alte Frage, aber ich denke, jemand kann von meiner Lösung profitieren.
select
SUBSTRING(column_name,1,CHARINDEX(' ',column_name,1)-1)
,SUBSTRING(SUBSTRING(column_name,CHARINDEX(' ',column_name,1)+1,LEN(column_name))
,1
,CHARINDEX(' ',SUBSTRING(column_name,CHARINDEX(' ',column_name,1)+1,LEN(column_name)),1)-1)
,SUBSTRING(SUBSTRING(column_name,CHARINDEX(' ',column_name,1)+1,LEN(column_name))
,CHARINDEX(' ',SUBSTRING(column_name,CHARINDEX(' ',column_name,1)+1,LEN(column_name)),1)+1
,LEN(column_name))
from table_name
SQL FIDDLE
Vorteile:
- Es trennt alle 3 Teilzeichenfolgen durch ' '.
- Es muss keine Schleife verwendet werden, da dies die Leistung beeinträchtigt.
- Es ist nicht notwendig zu pivotieren, da alle resultierenden Teilzeichenfolgen in einer Zeile angezeigt werden.
Einschränkungen:
- Es muss die Gesamtanzahl der Leerzeichen (Teilzeichenfolgen) bekannt sein.
Hinweis: Die Lösung kann Teilzeichenfolgen bis zu bis zu N liefern.
Um die Einschränkung zu überwinden, können wir die folgende Referenz verwenden.
Aber auch die obige Lösung kann nicht in einer Tabelle verwendet werden (eigentlich konnte ich sie nicht verwenden).
Noch hoffe ich, dass diese Lösung jemandem helfen kann.
Aktualisierung: Im Falle von Datensätzen > 50000 ist es nicht ratsam, SCHLEIFEN
zu verwenden, da dies die Leistung beeinträchtigt.
3 Stimmen
Siehe stackoverflow.com/questions/314824/… ebenfalls
5 Stimmen
Die höchsten Antworten hier sind - zumindest für mich - ziemlich altmodisch und eher veraltet. Prozedurale Logik, Schleifen, Rekursionen, CLR, Funktionen, viele Codezeilen... Es könnte interessant sein, die "aktiven" Antworten zu lesen, um aktuellere Ansätze zu finden.
0 Stimmen
Ich habe eine neue Antwort mit einem aktuelleren Ansatz hinzugefügt: stackoverflow.com/a/49669994/632604
0 Stimmen
Versuchen Sie Holen Sie sich das n-te Element einer Liste -> portosql.wordpress.com/2019/05/27/enesimo-elemento-lista
0 Stimmen
Einige Kommentare (einschließlich eines von mir) wurden gelöscht. Möchte sich einer der Moderatoren äußern?
1 Stimmen
@TimAbell, die Dokumentation besagt, dass "Die Reihenfolge entspricht möglicherweise nicht der Reihenfolge der Teilzeichenfolgen im Eingabestring".
0 Stimmen
@TimAbell Ja, ja... aber wie erhält man ein EINZELNES Ergebnis nach Index aus dem Ergebnis von
STRING_SPLIT
???0 Stimmen
Bis zur SQL Server 2022 ist die zuverlässigste Lösung
string_split
mit Ordinal. Siehe stackoverflow.com/a/70196925/87015