Función SPLIT_PART - Amazon Redshift

Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del 1 de noviembre de 2025. Si desea utilizar las UDF de Python, créelas antes de esa fecha. Las UDF de Python existentes seguirán funcionando con normalidad. Para obtener más información, consulte la publicación del blog.

Función SPLIT_PART

Divide una cadena en el delimitador especificado y devuelve la parte en la posición especificada.

Sintaxis

SPLIT_PART(string, delimiter, position)

Argumentos

string

Es una columna de cadena, una expresión o un literal de cadena que se va a dividir. La cadena puede ser CHAR o VARCHAR.

delimiter

Es la cadena delimitadora que indica las secciones del string de entrada.

Si el delimitador es un literal, enciérrelo entre comillas simples.

position

Posición de la porción de string a devolver (contando desde 1). Debe ser un número entero mayor que 0. Si position es mayor que la cantidad de porciones de la cadena, SPLIT_PART devuelve una cadena vacía. Si no se encuentra el delimitador en cadena, entonces el valor devuelto contiene el contenido de la parte especificado, que podría ser la cadena completa o un valor vacío.

Tipo de retorno

Una cadena CHAR o VARCHAR, igual que el parámetro string.

Ejemplos

En el siguiente ejemplo, se divide un literal de cadena en partes mediante el uso del delimitador $ que devuelve la segunda parte.

select split_part('abc$def$ghi','$',2) split_part ---------- def

En el siguiente ejemplo, se divide un literal de cadena en partes mediante el uso del delimitador $ que devuelve la segunda parte. Devuelve una cadena vacía porque no se encuentra la parte 4.

select split_part('abc$def$ghi','$',4) split_part ----------

En el siguiente ejemplo, se divide un literal de cadena en partes mediante el uso del delimitador # que devuelve la segunda parte. Devuelve la cadena completa, que es la primera parte, porque no se encuentra el delimitador.

select split_part('abc$def$ghi','#',1) split_part ------------ abc$def$ghi

En el siguiente ejemplo, se divide el campo de la marca temporal LISTTIME entre los componentes de año, mes y día.

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

En el siguiente ejemplo, se selecciona el campo de la marca temporal LISTTIME y se lo divide teniendo en cuenta el carácter '-' para obtener el mes (la segunda parte de la cadena LISTTIME). Luego, se cuenta la cantidad de entradas para cada mes:

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