Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Funzione SPLIT_PART
Divide una stringa sul delimitatore specificato e restituisce la parte nella posizione specificata.
Sintassi
SPLIT_PART(string, delimiter, position)
Argomenti
- stringa
-
Una stringa, una colonna, un'espressione o una stringa letterale da dividere. La stringa può essere CHAR o VARCHAR.
- delimiter
-
La stringa del delimitatore che indica le sezioni della stringa di input.
Se delimiter è un letterale, racchiuderlo tra virgolette singole.
- posizione
-
Posizione della porzione di stringa da restituire (contando da 1). Deve essere un integer superiore a 0. Se posizione è maggiore del numero di porzioni di stringa, SPLIT_PART restituisce una stringa vuota. Se il delimitatore non si trova nella stringa, il valore restituito contiene i contenuti della parte specificata, che possono essere l'intera stringa o un valore vuoto.
Tipo restituito
Una stringa CHAR o VARCHAR, uguale al parametro di stringa.
Esempi
L'esempio seguente divide una stringa letterale in parti utilizzando il delimitatore $
e restituisce la seconda parte.
select split_part('abc$def$ghi','$',2)
split_part ---------- def
L'esempio seguente divide una stringa letterale in parti utilizzando il delimitatore $
. Restituisce una stringa vuota perché la parte 4
non viene trovata.
select split_part('abc$def$ghi','$',4)
split_part ----------
L'esempio seguente divide una stringa letterale in parti utilizzando il delimitatore #
. Restituisce l'intera stringa, che è la prima parte, perché il delimitatore non è stato trovato.
select split_part('abc$def$ghi','#',1)
split_part ------------ abc$def$ghi
L'esempio seguente divide il campo timestamp LISTTIME in componenti anno, mese e data.
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'esempio seguente seleziona il campo timestamp LISTTIME e lo divide sul carattere '-'
per ottenere il mese (la seconda parte della stringa LISTTIME), quindi conta il numero di voci per ogni mese:
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