Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein), Tabellenfunktionen

STRTOK_SPLIT_TO_TABLE

Übersetzt eine Zeichenfolge mit den angegebenen Trennzeichen in Token und vereinfacht die Ergebnisse in Zeilen.

Siehe auch:

STRTOK, STRTOK_TO_ARRAY

Syntax

STRTOK_SPLIT_TO_TABLE(<string> [,<delimiter_list>])
Copy

Argumente

Benötigt:

string

Text, der in Token übersetzt werden soll.

Optional:

delimiter_list

Gruppe von Trennzeichen. Optional. Der Standardwert ist ein einzelnes Leerzeichen.

Rückgabewerte

Dies gibt eine Tabelle zurück.

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 Spalten der ursprünglichen (korrelierten) Tabelle, die als Datenquelle für diese Funktion verwendet wurde, sind ebenfalls aufrufbar. 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 STRTOK_SPLIT_TO_TABLE erzeugten Zeilen repliziert.

Beispiele

Hier ist ein einfaches Beispiel für eine konstante Eingabe:

SELECT table1.value 
    FROM table(strtok_split_to_table('a.b', '.')) AS table1
    ORDER BY table1.value;
+-------+
| VALUE |
|-------|
| a     |
| b     |
+-------+
Copy

In den folgenden zwei Beispielen werden die unten erstellten Tabellen und Daten verwendet:

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a b'), ('cde'), ('f|g'), ('');
Copy

Dieses Beispiel zeigt die Verwendung der Funktion als korrelierte Tabelle:

SELECT * 
    FROM splittable, LATERAL STRTOK_SPLIT_TO_TABLE(splittable.v, ' ')
    ORDER BY SEQ, INDEX;
+-----+-----+-------+-------+
| V   | SEQ | INDEX | VALUE |
|-----+-----+-------+-------|
| a b |   1 |     1 | a     |
| a b |   1 |     2 | b     |
| cde |   2 |     1 | cde   |
| f|g |   3 |     1 | f|g   |
+-----+-----+-------+-------+
Copy

Dieses Beispiel ist dasselbe wie das vorherige, außer dass mehrere Trennzeichen angegeben sind:

SELECT * 
    FROM splittable, LATERAL STRTOK_SPLIT_TO_TABLE(splittable.v, ' |')
    ORDER BY SEQ, INDEX;
+-----+-----+-------+-------+
| V   | SEQ | INDEX | VALUE |
|-----+-----+-------+-------|
| a b |   1 |     1 | a     |
| a b |   1 |     2 | b     |
| cde |   2 |     1 | cde   |
| f|g |   3 |     1 | f     |
| f|g |   3 |     2 | g     |
+-----+-----+-------+-------+
Copy