Catégories :

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

SPLIT_PART

Fractionne une chaîne donnée et renvoie la partie demandée.

Si un paramètre est NULL, NULL est renvoyé.

Voir aussi :

SPLIT

Syntaxe

SPLIT_PART(<string>, <delimiter>, <partNumber>)

Arguments

chaîne

Texte à scinder en plusieurs parties.

délimiteur

Texte représentant le délimiteur à scinder.

numéro_Article

Partie de la scission demandée (base 1).

Si la valeur est négative, les parties sont comptées à l’envers à partir de la fin de la chaîne.

Notes sur l’utilisation

  • Si le numéro_Article est hors limites, la valeur renvoyée est une chaîne vide.

  • Si la chaîne commence ou se termine par le délimiteur, le système considère respectivement les espaces vides avant ou après le délimiteur comme faisant partie du résultat de la division. (Pour un exemple, voir la section Exemples ci-dessous.)

  • Si le numéro_Article est 0, il est traité comme 1. En d’autres termes, il obtient le premier élément de la scission. Pour éviter toute confusion quant à savoir si les index sont basés sur 1 ou sur 0, Snowflake recommande d’éviter l’utilisation de 0 comme synonyme de 1.

  • Si le séparateur est une chaîne vide, après la scission, la valeur renvoyée est la chaîne d’entrée (la chaîne n’est pas fractionnée).

Détails du classement

Arguments with collation specifications are currently not supported.

Exemples

Montrez les portions renvoyées par différentes valeurs numéro_Article.

select  0, split_part('11.22.33', '.',  0) UNION
select  1, split_part('11.22.33', '.',  1) UNION
select  2, split_part('11.22.33', '.',  2) UNION
select  3, split_part('11.22.33', '.',  3) UNION
select  4, split_part('11.22.33', '.',  4) UNION
select -1, split_part('11.22.33', '.', -1) UNION
select -2, split_part('11.22.33', '.', -2) UNION
select -3, split_part('11.22.33', '.', -3) UNION
select -4, split_part('11.22.33', '.', -4)
;
+----+---------------------------------+
|  0 | SPLIT_PART('11.22.33', '.',  0) |
|----+---------------------------------|
|  0 | 11                              |
|  1 | 11                              |
|  2 | 22                              |
|  3 | 33                              |
|  4 |                                 |
| -1 | 33                              |
| -2 | 22                              |
| -3 | 11                              |
| -4 |                                 |
+----+---------------------------------+

Renvoie la première et la dernière parties de l’adresse IP de localhost 127.0.0.1 :

SELECT SPLIT_PART('127.0.0.1', '.', 1), SPLIT_PART('127.0.0.1', '.', -1);
+---------------------------------+----------------------------------+
| SPLIT_PART('127.0.0.1', '.', 1) | SPLIT_PART('127.0.0.1', '.', -1) |
|---------------------------------+----------------------------------|
| 127                             | 1                                |
+---------------------------------+----------------------------------+

Renvoie les première et deuxième parties d’une chaîne de caractères séparés par des barres verticales. Notez que le séparateur est la première partie de la chaîne d’entrée et que le premier élément après le fractionnement est donc une chaîne vide.

SELECT SPLIT_PART('|a|b|c|', '|', 1), SPLIT_PART('|a|b|c|', '|', 2);
+-------------------------------+-------------------------------+
| SPLIT_PART('|A|B|C|', '|', 1) | SPLIT_PART('|A|B|C|', '|', 2) |
|-------------------------------+-------------------------------|
|                               | a                             |
+-------------------------------+-------------------------------+

L’exemple suivant montre un séparateur à plusieurs caractères :

SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2);
+------------------------------------------+
| SPLIT_PART('AAA--BBB-BBB--CCC', '--', 2) |
|------------------------------------------|
| bbb-BBB                                  |
+------------------------------------------+

L’exemple suivant montre que si le séparateur est une chaîne vide, alors après le fractionnement, il n’y a toujours qu’une seule chaîne :

select  1, split_part('user@snowflake.net', '',  1) UNION
select -1, split_part('user@snowflake.net', '', -1) UNION
select  2, split_part('user@snowflake.net', '',  2) UNION
select -2, split_part('user@snowflake.net', '', -2);
+----+------------------------------------------+
|  1 | SPLIT_PART('USER@SNOWFLAKE.NET', '',  1) |
|----+------------------------------------------|
|  1 | user@snowflake.net                       |
| -1 | user@snowflake.net                       |
|  2 |                                          |
| -2 |                                          |
+----+------------------------------------------+