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

Arguments

Obligatoire :

chaîne

Texte à tokeniser.

Facultatif :

liste_délimiteur

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

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

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

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