Join- und split-Funktionen mit SQL

Auch die umgekehrte Funktionalität wäre wünschenswert: die Möglichkeit, einen einzelnen kommagetrennten Wert wie eine Spalte einer Tabelle zu verwenden. Hierfür kann man einfach auf die TABLE SQL-Funktion und PL/SQL-Funktionstabellen zurückgreifen. Zuerst muss man jedoch den Ergebnistyp als TABLE des größtmöglichen Strings definieren.


Mit dieser Funktion kann man zum Beispiel die folgende Abfrage ausführen:


Die PL/SQL-Prozedur parst ihre Argumente und gibt jeden Teil über eine PIPELINE aus. Die TABLE-Funktion ermöglicht ihre Verwendung im FROM-Ausdruck, so dass sie für SQL als eine Tabelle mit einer Spalte und drei Zeilen erscheint. (Die ausgegebene Spalte hat den Namen COLUMN_VALUE. Daran sollte man denken, falls man den Wert noch an anderer Stelle benutzen will.)

Hier ein Beispiel für eine Abfrage, die eine dynamische IN-Bedingung in einer Abfrage verwendet. Die split-Funktion generiert eine Tabelle von Werten, die Zeile für Zeile verwendet werden können.


Die entsprechende Ausgabe ist in Tabelle B enthalten.

Wenn man will, kann man eine Spalte zusammenfügen und dann wieder aufsplitten:


Man kann mit dieser Methode auch Datensätze zusammenführen:


Dies sind nur ein paar einfache Beispielfunktionen. Man könnte die join-Funktion auch so erweitern, dass auch Werte in Anführungszeichen zulässig sind, wobei Anführungszeichen innerhalb der Werte escaped werden müssen. Außerdem kann man die split-Funktion so ergänzen, dass statt eines einzelnen VARCHAR2 auch ein REF CURSOR als Parameter zulässig ist, wodurch auch mehrere Spalten aufgesplittet werden können.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Join- und split-Funktionen mit SQL

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *