- Categorias:
Funções de dados semiestruturados e estruturados (Matriz/objeto)
ARRAY_CONTAINS¶
Retorna TRUE se o valor especificado for encontrado na matriz especificada.
Sintaxe¶
ARRAY_CONTAINS( <value_expr> , <array> )
Argumentos¶
value_expr
Valor a ser encontrado em
array
.Se
array
for um matriz semiestruturada,value_expr
deve ser avaliado como um VARIANT.Se
array
for uma matriz estruturada,value_expr
deve ser avaliada como um tipo comparável ao tipo da matriz.
array
A matriz a ser pesquisada.
Retornos¶
Esta função retorna um valor do tipo BOOLEAN ou NULL:
A função retorna TRUE se
value_expr
estiver presente emarray
.A função retorna FALSE se
value_expr
não estiver presente emarray
.A função retorna NULL se o argumento
value_expr
for NULL e não houver valores NULL na matriz.Se o argumento
value_expr
for NULL e houver um valor NULL na matriz, a função retornará TRUE.
Notas de uso¶
A função não oferece suporte a curingas em value_expr
. No entanto, você pode usar a função ARRAY_TO_STRING para converter uma matriz em uma cadeia de caracteres e, em seguida, pesquisar a cadeia de caracteres com caracteres curinga. Por exemplo, você pode especificar curingas para pesquisar a cadeia de caracteres retornada usando as funções [ NOT ] LIKE e REGEXP_LIKE.
Exemplos¶
As consultas a seguir usam a função ARRAY_CONTAINS em uma lista SELECT:
SELECT ARRAY_CONTAINS('hello'::VARIANT, ARRAY_CONSTRUCT('hello', 'hi'));
+------------------------------------------------------------------+
| ARRAY_CONTAINS('HELLO'::VARIANT, ARRAY_CONSTRUCT('HELLO', 'HI')) |
|------------------------------------------------------------------|
| True |
+------------------------------------------------------------------+
SELECT ARRAY_CONTAINS('hello'::VARIANT, ARRAY_CONSTRUCT('hola', 'bonjour'));
+----------------------------------------------------------------------+
| ARRAY_CONTAINS('HELLO'::VARIANT, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) |
|----------------------------------------------------------------------|
| False |
+----------------------------------------------------------------------+
SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', 'bonjour'));
+----------------------------------------------------------+
| ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) |
|----------------------------------------------------------|
| NULL |
+----------------------------------------------------------+
SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', NULL));
+-----------------------------------------------------+
| ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('HOLA', NULL)) |
|-----------------------------------------------------|
| True |
+-----------------------------------------------------+
A consulta a seguir usa a função ARRAY_CONTAINS em uma cláusula WHERE. Primeiro, crie uma tabela com uma coluna ARRAY e insira os dados:
CREATE OR REPLACE TABLE array_example (id INT, array_column ARRAY);
INSERT INTO array_example (id, array_column)
SELECT 1, ARRAY_CONSTRUCT(1, 2, 3);
INSERT INTO array_example (id, array_column)
SELECT 2, ARRAY_CONSTRUCT(4, 5, 6);
SELECT * FROM array_example;
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
| 1 | [ |
| | 1, |
| | 2, |
| | 3 |
| | ] |
| 2 | [ |
| | 4, |
| | 5, |
| | 6 |
| | ] |
+----+--------------+
Execute uma consulta que especifique o valor a ser encontrado para value_expr
e a coluna ARRAY para array
:
SELECT * FROM array_example WHERE ARRAY_CONTAINS(5, array_column);
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
| 2 | [ |
| | 4, |
| | 5, |
| | 6 |
| | ] |
+----+--------------+