- Kategorien:
Zeichenfolgen- und Binärfunktionen (Allgemein), Tabellenfunktionen
SPLIT_TO_TABLE¶
Diese Tabellenfunktion teilt eine Zeichenfolge (basierend auf einem angegebenen Trennzeichen) und vereinfacht die Ergebnisse in Zeilen.
- Siehe auch:
Syntax¶
SPLIT_TO_TABLE(<string>, <delimiter>)
Argumente¶
string
Aufzuteilender Text.
delimiter
Text, anhand dessen die Zeichenfolge aufgeteilt werden soll.
Rückgabewerte¶
Der zurückgegebene Wert ist eine Tabelle.
Die zurückgegebenen Zeilen bestehen aus einer festen Menge von Spalten:
+-----+-------+-------+ | SEQ | INDEX | VALUE | |-----+-------+-------|
- SEQ:
Eine eindeutige Sequenznummer, die dem Eingabedatensatz zugeordnet ist; es ist nicht garantiert, dass die Sequenz lückenlos ist oder auf eine bestimmte Weise angeordnet wird.
- INDEX:
Der Index des Elements. Eins-basiert.
- VALUE:
Der Wert des Elements des vereinfachten Arrays.
Bemerkung
Die Abfrage kann auch auf die Spalten der ursprünglichen (korrelierten) Tabelle zugreifen, die als Datenquelle für diese Funktion diente. Wenn eine einzelne Zeile der ursprünglichen Tabelle in der vereinfachten Ansicht zu mehreren Zeilen führt, werden die Werte in dieser Eingabezeile entsprechend der Zahl der von SPLIT_TO_TABLE erzeugten Zeilen repliziert.
Beispiele¶
Hier ist ein einfaches Beispiel für eine konstante Eingabe:
SELECT table1.value FROM table(split_to_table('a.b', '.')) AS table1 ORDER BY table1.value; +-------+ | VALUE | |-------| | a | | b | +-------+
Im folgenden Beispiel werden die unten erstellte Tabelle und Daten verwendet:
CREATE OR REPLACE TABLE splittable (v VARCHAR); INSERT INTO splittable (v) VALUES ('a.b.c'), ('d'), ('');Diese Abfrage zeigt die Verwendung der Funktion als korrelierte Tabelle:
SELECT * FROM splittable, LATERAL SPLIT_TO_TABLE(splittable.v, '.') ORDER BY SEQ, INDEX; +-------+-----+-------+-------+ | V | SEQ | INDEX | VALUE | |-------+-----+-------+-------| | a.b.c | 1 | 1 | a | | a.b.c | 1 | 2 | b | | a.b.c | 1 | 3 | c | | d | 2 | 1 | d | | | 3 | 1 | | +-------+-----+-------+-------+