Función ARRAY_POSITION - Amazon Redshift

Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la publicación del blog.

Función ARRAY_POSITION

Devuelve la posición (índice) de la primera aparición de un elemento especificado en una matriz. El índice comienza en 0, donde 0 indica el primer elemento, 1 indica el segundo elemento, y así sucesivamente. Devuelve -1 si el elemento no se encuentra en la matriz.

La función solo devuelve la posición de la primera aparición. Para encontrar todas las apariciones, considere utilizar la función Función ARRAY_POSITIONS.

Sintaxis

ARRAY_POSITION( array, value [, null_match] )

Argumentos

array

Una expresión SUPER que especifica la matriz en la que se va a buscar.

valor de

Un valor que especifica el elemento que se va a buscar.

null_match

Un valor booleano que especifica cómo se gestionan los valores NULL:

  • null_match = FALSE: Searching for NULL returns NULL. If the array contains NULL values and no match is found for a non-NULL search value, returns NULL.
  • null_match = TRUE: NULLs are treated as valid, searchable elements. If the array contains NULL values and no match is found for a non-NULL search value, it returns -1.

El valor predeterminado es TRUE.

La gestión predeterminada de NULL también se puede especificar mediante la opción de configuración:

-- same as null_match = TRUE SET default_array_search_null_handling to TRUE;

Tipo de retorno

La función ARRAY_POSITION devuelve un tipo INT.

Ejemplo

Los ejemplos siguientes muestran la función ARRAY_POSITION.

SELECT ARRAY_POSITION(ARRAY('red', 'green'), 'red'); array_position ---------------- 0 (1 row) SELECT ARRAY_POSITION(ARRAY(1, 2, 3), 4); array_position ---------------- -1 (1 row) -- only the position of the first occurrence is returned SELECT ARRAY_POSITION(ARRAY('red', 'green', 'red'), 'red'); array_position ---------------- 0 (1 row)

Los ejemplos siguientes muestran el comportamiento de la función con null_match establecido en TRUE.

SET default_array_search_null_handling to TRUE; -- NULL search is enabled SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), NULL); array_position ---------------- 1 (1 row) -- The array can contain NULLs SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), 'blue', TRUE); array_position ---------------- -1 (1 row)

Los ejemplos siguientes muestran el comportamiento de la función con null_match establecido en FALSE. Tenga en cuenta que si se especifica el comportamiento null_match en la función, se anulará el valor de configuración predeterminado.

-- same as null_match = TRUE SET default_array_search_null_handling to TRUE; -- NULL search is disabled. The default behavior is overridden SELECT ARRAY_POSITION(ARRAY('red', 'green'), NULL, FALSE); array_position ---------------- (1 row) -- same as null_match = FALSE SET default_array_search_null_handling to FALSE; -- The array contains NULL and a match is found SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), 'green'); array_position ---------------- 2 (1 row) -- The array contains NULL but no match is found SELECT ARRAY_POSITION(ARRAY('red', NULL, 'green'), 'blue'); array_position ---------------- (1 row)

Véase también