Catégories :

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

SPLIT

Fractionne une chaîne donnée avec un séparateur donné et renvoie le résultat sous la forme d’un tableau de chaînes.

Des chaînes fractionnées contiguës dans la chaîne source ou la présence d’une chaîne fractionnée au début ou à la fin de la chaîne source entraînent une chaîne vide dans la sortie. Une chaîne de séparateur vide produit un tableau contenant uniquement la chaîne source. Si l’un des paramètres est NULL, une valeur NULL est renvoyée.

Le résultat peut être utilisé avec des fonctions et des constructions opérant sur des données semi-structurées (par exemple FLATTEN, ARRAY_SIZE).

Voir aussi :

SPLIT_PART

Syntaxe

SPLIT(<string>, <separator>)
Copy

Arguments

string

Texte à scinder en plusieurs parties.

separator

Texte servant à scinder la chaîne.

Renvoie

Le type de données de la valeur renvoyée est ARRAY.

Détails du classement

Cette fonction ne fonctionne pas avec les spécifications de classement suivantes :

  • lower.

  • upper.

  • pi (insensible à la ponctuation).

  • cs-ai (sensible à la casse, insensible aux accents)

Les valeurs du tableau de sortie n’incluent pas de spécification de classement et ne prennent donc pas en charge d’autres opérations de classement.

Exemples

Divisez l’adresse IP localhost 127.0.0.1 en un tableau composé de chacune des quatre parties :

SELECT SPLIT('127.0.0.1', '.');

+-------------------------+
| SPLIT('127.0.0.1', '.') |
|-------------------------|
| [                       |
|   "127",                |
|   "0",                  |
|   "0",                  |
|   "1"                   |
| ]                       |
+-------------------------+
Copy

Fractionnez une chaîne contenant des lignes verticales en tant que séparateurs (notez que la sortie contiendra des chaînes vides) :

SELECT SPLIT('|a||', '|');

+--------------------+
| SPLIT('|A||', '|') |
|--------------------|
| [                  |
|   "",              |
|   "a",             |
|   "",              |
|   ""               |
| ]                  |
+--------------------+
Copy

Utilisez le résultat de SPLIT pour générer plusieurs enregistrements à partir d’une seule chaîne à l’aide de la construction LATERAL FLATTEN. FLATTEN est une fonction de table qui utilise une colonne VARIANT, OBJECT ou ARRAY et génère une vue latérale (c’est-à-dire une vue en ligne contenant une corrélation faisant référence à d’autres tables qui la précèdent dans la clause FROM) :

SELECT * FROM persons;

------+---------------------+
 NAME |      CHILDREN       |
------+---------------------+
 Mark | Marky,Mark Jr,Maria |
 John | Johnny,Jane         |
------+---------------------+

SELECT name, C.value::string AS childName
FROM persons,
     LATERAL FLATTEN(input=>split(children, ',')) C;

------+-----------+
 NAME | CHILDNAME |
------+-----------+
 John | Johnny    |
 John | Jane      |
 Mark | Marky     |
 Mark | Mark Jr   |
 Mark | Maria     |
------+-----------+
Copy