- Catégories :
SPLIT_PART¶
Fractionne une chaîne donnée et renvoie la partie demandée.
Pour renvoyer tous les caractères après un caractère spécifié, vous pouvez utiliser les fonctions POSITION et SUBSTR. Pour un exemple, voir Renvoyer des sous-chaînes pour les chaînes d’e-mail, de téléphone et de date.
Astuce
Vous pouvez utiliser le service d’optimisation de recherche pour améliorer les performances des requêtes qui appellent cette fonction. Pour plus de détails, voir Service d’optimisation de la recherche.
- Voir aussi ::
Syntaxe¶
SPLIT_PART(<string>, <delimiter>, <partNumber>)
Arguments¶
string
Texte à scinder en plusieurs parties.
delimiter
Texte représentant le délimiteur à scinder.
partNumber
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.
Renvoie¶
La fonction renvoie une valeur de type VARCHAR.
Si un argument est NULL, NULL est retourné.
Notes sur l’utilisation¶
Si le
partNumber
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
partNumber
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¶
The collation specifications of all input arguments must be compatible.
Cette fonction ne fonctionne pas avec les spécifications de classement suivantes :
pi
(insensible à la ponctuation).cs-ai
(sensible à la casse, insensible aux accents)
Exemples¶
Cet exemple montre les portions renvoyées par différentes valeurs partNumber
.
SELECT column1 part_number_value, column2 portion
FROM VALUES
(0, SPLIT_PART('11.22.33', '.', 0)),
(1, SPLIT_PART('11.22.33', '.', 1)),
(2, SPLIT_PART('11.22.33', '.', 2)),
(3, SPLIT_PART('11.22.33', '.', 3)),
(4, SPLIT_PART('11.22.33', '.', 4)),
(-1, SPLIT_PART('11.22.33', '.', -1)),
(-2, SPLIT_PART('11.22.33', '.', -2)),
(-3, SPLIT_PART('11.22.33', '.', -3)),
(-4, SPLIT_PART('11.22.33', '.', -4));
+-------------------+---------+
| PART_NUMBER_VALUE | PORTION |
|-------------------+---------|
| 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 l’hôte local 127.0.0.1
:
SELECT SPLIT_PART('127.0.0.1', '.', 1) AS first_part,
SPLIT_PART('127.0.0.1', '.', -1) AS last_part;
+------------+-----------+
| FIRST_PART | LAST_PART |
|------------+-----------|
| 127 | 1 |
+------------+-----------+
Cet exemple renvoie les première et deuxième parties d’une chaîne de caractères séparés par des barres verticales. 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) AS first_part,
SPLIT_PART('|a|b|c|', '|', 2) AS last_part;
+------------+-----------+
| FIRST_PART | LAST_PART |
|------------+-----------|
| | a |
+------------+-----------+
Cet exemple suivant montre un séparateur à plusieurs caractères :
SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2) AS multi_character_separator;
+---------------------------+
| MULTI_CHARACTER_SEPARATOR |
|---------------------------|
| 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 column1 part_number_value, column2 portion
FROM VALUES
(1, split_part('user@snowflake.com', '', 1)),
(-1, split_part('user@snowflake.com', '', -1)),
(2, split_part('user@snowflake.com', '', 2)),
(-2, split_part('user@snowflake.com', '', -2));
+-------------------+--------------------+
| PART_NUMBER_VALUE | PORTION |
|-------------------+--------------------|
| 1 | user@snowflake.com |
| -1 | user@snowflake.com |
| 2 | |
| -2 | |
+-------------------+--------------------+