Categorias:

Funções de dados semiestruturados e estruturados (Matriz/objeto)

ARRAY_APPEND

Retorna uma matriz contendo todos os elementos da matriz de origem, bem como o novo elemento. O novo elemento está localizado no final da matriz.

Consulte também:

ARRAY_INSERT , ARRAY_PREPEND

Sintaxe

ARRAY_APPEND( <array> , <new_element> )
Copy

Argumentos

array

A matriz de origem.

new_element

O elemento a ser anexado. O tipo do elemento depende do tipo da matriz:

  • Se array for uma matriz semiestruturada, o elemento poderá ser de praticamente qualquer tipo de dados. O tipo de dados pode ser diferente do(s) tipo(s) de dados dos elementos existentes na matriz.

  • Se array for uma matriz estruturada, o tipo do novo elemento deverá ser coercitivo com o tipo da matriz.

Retornos

O tipo de dados do valor retornado é ARRAY.

Quando você passa uma matriz estruturada para a função, a função retorna uma matriz estruturada do mesmo tipo.

Se a matriz de origem for NULL, a função retornará NULL.

Exemplos

Os exemplos usam a tabela a seguir com uma coluna ARRAY:

CREATE OR REPLACE TABLE array_append_examples (array_column ARRAY);

INSERT INTO array_append_examples (array_column)
  SELECT ARRAY_CONSTRUCT(1, 2, 3);

SELECT * FROM array_append_examples;
Copy
+--------------+
| ARRAY_COLUMN |
|--------------|
| [            |
|   1,         |
|   2,         |
|   3          |
| ]            |
+--------------+

Adiciona um elemento do mesmo tipo à matriz:

UPDATE array_append_examples
  SET array_column = ARRAY_APPEND(array_column, 4);
Copy

Consulte a tabela para ver o novo elemento adicionado à matriz:

SELECT * FROM array_append_examples;
Copy
+--------------+
| ARRAY_COLUMN |
|--------------|
| [            |
|   1,         |
|   2,         |
|   3,         |
|   4          |
| ]            |
+--------------+

Adicione um elemento de um tipo diferente à matriz:

UPDATE array_append_examples
  SET array_column = ARRAY_APPEND(array_column, 'five');
Copy

Consulte a tabela para ver o novo elemento adicionado à matriz e o tipo de dados de cada elemento da matriz:

SELECT array_column,
       ARRAY_CONSTRUCT(
        TYPEOF(array_column[0]),
        TYPEOF(array_column[1]),
        TYPEOF(array_column[2]),
        TYPEOF(array_column[3]),
        TYPEOF(array_column[4])) AS type
  FROM array_append_examples;
Copy
+--------------+--------------+
| ARRAY_COLUMN | TYPE         |
|--------------+--------------|
| [            | [            |
|   1,         |   "INTEGER", |
|   2,         |   "INTEGER", |
|   3,         |   "INTEGER", |
|   4,         |   "INTEGER", |
|   "five"     |   "VARCHAR"  |
| ]            | ]            |
+--------------+--------------+