- Catégories :
SPLIT_PART¶
Fractionne une chaîne donnée et renvoie la partie demandée.
Si un paramètre est NULL, NULL est renvoyé.
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.
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)
Note
Pour utiliser cette fonction avec une colonne qui a les spécificateurs de classement upper
ou lower
, vous devez activer le bundle de changements de comportement 2024_02 dans votre compte.
Pour activer ce bundle dans votre compte, exécutez l’instruction suivante :
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Exemples¶
Montrez les portions renvoyées par différentes valeurs partNumber
.
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.com', '', 1) UNION select -1, split_part('user@snowflake.com', '', -1) UNION select 2, split_part('user@snowflake.com', '', 2) UNION select -2, split_part('user@snowflake.com', '', -2); +----+------------------------------------------+ | 1 | SPLIT_PART('USER@SNOWFLAKE.COM', '', 1) | |----+------------------------------------------| | 1 | user@snowflake.com | | -1 | user@snowflake.com | | 2 | | | -2 | | +----+------------------------------------------+