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>])

Argumente

Benötigt:

Zeichenfolge

Text, der in Token übersetzt werden soll.

Optional:

Trennzeichenliste

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

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

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

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