Categorias:

Funções de conversão , Funções de dados semiestruturados e estruturados (Matriz/objeto)

TO_ARRAY

Converte a expressão de entrada em um valor ARRAY.

Sintaxe

TO_ARRAY( <expr> )
Copy

Argumentos

expr

Uma expressão de qualquer tipo de dados.

Retornos

Esta função retorna um valor do tipo ARRAY ou NULL:

  • Se a entrada for um ARRAY ou um VARIANT contendo um valor ARRAY, o valor será retornado inalterado.

  • Se expr for um valor NULL ou JSON nulo, a função retornará NULL.

  • Para qualquer outro valor, o valor retornado é uma matriz de elemento único que contém esse valor.

Notas de uso

Para criar uma matriz que contenha mais de um elemento, você pode usar ARRAY_CONSTRUCT ou STRTOK_TO_ARRAY.

Exemplos

Crie uma tabela e insira dados chamando a função TO_ARRAY:

CREATE OR REPLACE TABLE array_demo_2 (
  ID INTEGER,
  array1 ARRAY,
  array2 ARRAY);

INSERT INTO array_demo_2 (ID, array1, array2)
  SELECT 1, TO_ARRAY(1), TO_ARRAY(3);

SELECT * FROM array_demo_2;
Copy
+----+--------+--------+
| ID | ARRAY1 | ARRAY2 |
|----+--------+--------|
|  1 | [      | [      |
|    |   1    |   3    |
|    | ]      | ]      |
+----+--------+--------+

Execute uma consulta que mostre as matrizes de elemento único criadas durante a inserção e o resultado da chamada a ARRAY_CAT para concatenar as duas matrizes:

SELECT array1, array2, ARRAY_CAT(array1, array2)
  FROM array_demo_2;
Copy
+--------+--------+---------------------------+
| ARRAY1 | ARRAY2 | ARRAY_CAT(ARRAY1, ARRAY2) |
|--------+--------+---------------------------|
| [      | [      | [                         |
|   1    |   3    |   1,                      |
| ]      | ]      |   3                       |
|        |        | ]                         |
+--------+--------+---------------------------+

Este exemplo demonstra que TO_ARRAY converte uma expressão de entrada da cadeia de caracteres em uma matriz com um único elemento, mesmo quando a expressão de entrada inclui delimitadores (como vírgulas):

SELECT TO_ARRAY('snowman,snowball,snowcone') AS to_array_result;
Copy
+-------------------------------+
| TO_ARRAY_RESULT               |
|-------------------------------|
| [                             |
|   "snowman,snowball,snowcone" |
| ]                             |
+-------------------------------+

Para converter a mesma expressão de entrada da cadeia de caracteres em uma matriz com vários elementos, você pode usar a função STRTOK_TO_ARRAY:

SELECT STRTOK_TO_ARRAY('snowman,snowball,snowcone', ',') AS strtok_to_array_result;
Copy
+------------------------+
| STRTOK_TO_ARRAY_RESULT |
|------------------------|
| [                      |
|   "snowman",           |
|   "snowball",          |
|   "snowcone"           |
| ]                      |
+------------------------+