Catégories :

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

SPLIT_TO_TABLE

Cette fonction de table divise une chaîne (en fonction d’un délimiteur spécifié) et aplatit les résultats en lignes.

Voir aussi :

SPLIT

Syntaxe

SPLIT_TO_TABLE(<string>, <delimiter>)

Arguments

chaîne

Texte à scinder.

délimiteur

Texte servant à scinder.

Renvoie

La valeur renvoyée est 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

La requête peut également accéder aux colonnes de la table d’origine (corrélée) ayant servi de source de données pour cette fonction. 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 SPLIT_TO_TABLE.

Exemples

Voici un exemple simple sur une entrée constante.

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

L’exemple suivant utilise la table et les données créées ci-dessous :

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a.b.c'), ('d'), ('');

Cette requête montre l’utilisation de la fonction en tant que table corrélée :

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