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_POSITIONS
Devuelve una matriz de posiciones (índices) donde aparece el elemento especificado en la matriz de entrada. Los índices se basan en 0, donde 0 indica el primer elemento, 1 indica el segundo elemento, y así sucesivamente. Devuelve una matriz vacía si no se encuentra el elemento.
Sintaxis
ARRAY_POSITIONS( 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: al buscar NULL, devuelve NULL. Si la matriz contiene valores NULL y no se encuentra ninguna coincidencia para un valor de búsqueda distinto de NULL, devuelve NULL.
null_match = TRUE: los valores NULL se tratan como elementos válidos y susceptibles de búsqueda. Si la matriz contiene valores NULOS y no se encuentra ninguna coincidencia con un valor de búsqueda distinto de NULL, devuelve una matriz vacía.
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_POSITIONS devuelve un tipo SUPER.
Ejemplo
Los ejemplos siguientes muestran la función ARRAY_POSITIONS.
SELECT ARRAY_POSITIONS(ARRAY('red', 'green', 'red'), 'red'); array_positions ----------------- [0,2] (1 row) SELECT ARRAY_POSITIONS(ARRAY(1, 2, 3), 4); array_positions ----------------- [] (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_POSITIONS(ARRAY('red', NULL, 'green', NULL), NULL); array_positions ----------------- [1,3] (1 row) -- The array can contain NULLs SELECT ARRAY_POSITIONS(ARRAY('red', NULL, 'green'), 'blue', TRUE); array_positions ----------------- [] (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_POSITIONS(ARRAY('red', 'green'), NULL, FALSE); array_positions ----------------- (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_POSITIONS(ARRAY('red', NULL, 'green'), 'green'); array_positions ----------------- [2] (1 row) -- The array contains NULL but no match is found SELECT ARRAY_POSITIONS(ARRAY('red', NULL, 'green'), 'blue'); array_positions ----------------- (1 row)