Catégories :

Fonctions de chaîne et fonctions binaires (général) , Fonctions de table

STRTOK_SPLIT_TO_TABLE

Tokenize une chaîne avec le jeu de délimiteurs donné et aplatit les résultats en lignes.

Voir aussi :

STRTOK, STRTOK_TO_ARRAY

Syntaxe

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

Arguments

Obligatoire :

string

Texte à tokeniser.

Facultatif :

delimiter_list

Ensemble de délimiteurs. En option. La valeur par défaut est un caractère d’espacement unique.

Renvoie

Cela renvoie une table.

Les lignes renvoyées sont constituées d’un ensemble fixe de colonnes :

+-----+-------+-------+
| SEQ | INDEX | VALUE |
|-----+-------+-------|
Copy
SEQ:

Un numéro de séquence unique associé à l’enregistrement d’entrée ; il n’est pas garanti que la séquence ne présente pas d’écart ou qu’elle soit ordonnée d’une manière particulière.

INDEX:

Index de l’élément. Basé sur un.

VALUE:

Valeur de l’élément du tableau aplati.

Note

Les colonnes de la table originale (corrélée) qui a servi de source de données pour cette fonction sont également accessibles. Si une seule ligne de la table d’origine a donné plusieurs lignes dans la vue aplatie, les valeurs de cette ligne d’entrée sont répliquées pour correspondre au nombre de lignes produites par STRTOK_SPLIT_TO_TABLE.

Exemples

Voici un exemple simple sur une entrée constante.

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

Les deux exemples suivants utilisent la table et les données créées ci-dessous :

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

Cet exemple montre l’utilisation de la fonction sous forme de table corrélée :

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

Cet exemple est identique au précédent, à la différence près qu’il spécifie plusieurs délimiteurs :

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