Catégories :

Fonctions de conversion , Fonctions de données semi-structurées et structurées (tableau/objet)

TO_ARRAY

Convertit l’expression d’entrée en une valeur ARRAY.

Syntaxe

TO_ARRAY( <expr> )
Copy

Arguments

expr

Une expression de tout type de données.

Renvoie

Cette fonction renvoie une valeur de type ARRAY ou NULL :

  • Si l’entrée est un ARRAY ou un VARIANT contenant une valeur ARRAY, la valeur est retournée inchangée.

  • Si expr est une valeur NULL ou JSON null, la fonction renvoie NULL.

  • Pour toute autre valeur, la valeur retournée est un tableau à un seul élément qui contient cette valeur.

Notes sur l’utilisation

Pour créer un tableau contenant plus d’un élément, vous pouvez utiliser ARRAY_CONSTRUCT ou STRTOK_TO_ARRAY.

Exemples

Créez une table et insérez des données en appelant la fonction 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    |
|    | ]      | ]      |
+----+--------+--------+

Exécutez une requête qui montre les tableaux à élément unique créés lors de l’insertion et le résultat de l’appel à ARRAY_CAT pour concaténer les deux tableaux :

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

Cet exemple montre que TO_ARRAY convertit une expression d’entrée sous forme de chaîne en un tableau à un seul élément, même lorsque l’expression d’entrée comprend des délimiteurs (tels que des virgules) :

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

Pour convertir la même expression d’entrée de chaîne en un tableau à éléments multiples, vous pouvez utiliser la fonction STRTOK_TO_ARRAY :

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