Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Divise une chaîne sur le délimiteur spécifié et renvoie la partie à la position spécifiée.
Syntaxe
SPLIT_PART(string, delimiter, position)
Arguments
- string
-
Colonne de chaîne, expression ou littéral de chaîne à fractionner. La chaîne peut être CHAR ou VARCHAR.
- delimiter
-
Chaîne de délimiteur indiquant les sections de la chaîne d’entrée.
Si delimiter est un littéral, mettez-le entre guillemets simples.
- position
-
Position de la partie de chaîne à renvoyer (à partir de 1). Doit être un nombre entier supérieur à 0. Si la valeur de position est supérieure au nombre de parties de chaîne, SPLIT_PART renvoie une chaîne vide. Si délimiteur est introuvable dans chaîne, alors la valeur renvoyée contient le contenu de la partie spécifiée, qui pourrait être la chaîne entière ou une valeur vide.
Type de retour
Chaîne CHAR ou VARCHAR, la même que le paramètre string.
Exemples
L’exemple suivant fractionne un littéral de chaîne en différentes parties en utilisant le délimiteur $
et renvoie la seconde partie.
select split_part('abc$def$ghi','$',2)
split_part
----------
def
L’exemple suivant fractionne un littéral de chaîne en différentes parties en utilisant le délimiteur $
. Il renvoie une chaîne vide, car la partie 4
est introuvable.
select split_part('abc$def$ghi','$',4)
split_part
----------
L’exemple suivant fractionne un littéral de chaîne en différentes parties en utilisant le délimiteur #
. Il renvoie la chaîne entière, qui correspond à la première partie, car le délimiteur est introuvable.
select split_part('abc$def$ghi','#',1)
split_part
------------
abc$def$ghi
L’exemple suivant divise le champ d’horodatage LISTTIME en composants d’année, de mois et de date.
select listtime, split_part(listtime,'-',1) as year,
split_part(listtime,'-',2) as month,
split_part(split_part(listtime,'-',3),' ',1) as day
from listing limit 5;
listtime | year | month | day
---------------------+------+-------+------
2008-03-05 12:25:29 | 2008 | 03 | 05
2008-09-09 08:03:36 | 2008 | 09 | 09
2008-09-26 05:43:12 | 2008 | 09 | 26
2008-10-04 02:00:30 | 2008 | 10 | 04
2008-01-06 08:33:11 | 2008 | 01 | 06
L’exemple suivant sélectionne le champ d’horodatage LISTTIME et le divise sur le caractère '-'
pour obtenir le mois (la deuxième partie de la chaîne LISTTIME), puis compte le nombre d’entrées de chaque mois :
select split_part(listtime,'-',2) as month, count(*)
from listing
group by split_part(listtime,'-',2)
order by 1, 2;
month | count
-------+-------
01 | 18543
02 | 16620
03 | 17594
04 | 16822
05 | 17618
06 | 17158
07 | 17626
08 | 17881
09 | 17378
10 | 17756
11 | 12912
12 | 4589