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:

SPLIT

Syntax

SPLIT_TO_TABLE(<string>, <delimiter>)
Copy

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 |
|-----+-------+-------|
Copy
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     |
+-------+
Copy

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'), ('');
Copy

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 |       |
+-------+-----+-------+-------+
Copy