Função ARRAY_POSITIONS - Amazon Redshift

O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a publicação de blog .

Função ARRAY_POSITIONS

Exibe uma matriz de posições (índices) em que o elemento especificado aparece na matriz de entrada. Os índices são de base 0, em que 0 indica o primeiro elemento, 1 indica o segundo elemento e assim por diante. Exibirá uma matriz vazia se o elemento não for encontrado.

Sintaxe

ARRAY_POSITIONS( array, value [, null_match] )

Argumentos

array

Uma expressão SUPER que especifica a matriz na qual pesquisar.

valor

Um valor que especifica o elemento a ser pesquisado.

null_match

Um valor booliano que especifica como os valores NULL são tratados:

  • null_match = FALSE: a pesquisa por NULL exibe NULL. Se a matriz contiver valores NULL e nenhuma correspondência for encontrada para um valor de pesquisa não NULL, exibirá NULL.

  • null_match = TRUE: os valores NULL são tratados como elementos válidos e pesquisáveis. Se a matriz contiver valores NULL e nenhuma correspondência for encontrada para um valor de pesquisa não NULL, exibirá uma matriz vazia.

O padrão é TRUE.

O tratamento padrão de NULL também pode ser especificado pela opção de configuração:

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

Tipo de retorno

A função ARRAY_POSITIONS exibe um tipo SUPER.

Exemplo

Os exemplos a seguir mostram a função 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)

Os exemplos a seguir mostram o comportamento da função com null_match definido como 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)

Os exemplos a seguir mostram o comportamento da função com null_match definido como FALSE. Observe que, ao especificar o comportamento null_match na função, a configuração padrão será substituída.

-- 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)

Consulte também