- Catégories :
Fonctions de données semi-structurées et structurées (tableau/objet)
ARRAY_CONTAINS¶
Renvoie TRUE si la valeur spécifiée se trouve dans le tableau spécifié.
Syntaxe¶
ARRAY_CONTAINS( <value_expr> , <array> )
Arguments¶
value_expr
Valeur à trouver dans
array
.Si
array
est un tableau semi-structuré,value_expr
doit être évalué sur une VARIANT.Si
array
est un tableau structuré,value_expr
doit être évalué sur un type qui est comparable au type du tableau.
array
Le tableau à rechercher.
Renvoie¶
Cette fonction renvoie une valeur de type BOOLEAN ou NULL :
La fonction renvoie TRUE si
value_expr
est présent dansarray
.La fonction renvoie FALSE si
value_expr
n’est pas présent dansarray
.La fonction renvoie NULL si l’argument
value_expr
est NULL et qu’il n’y a pas de valeurs NULL dans le tableau.Si l’argument
value_expr
est NULL et qu’il y a une valeur NULL dans le tableau, la fonction renvoie TRUE.
Notes sur l’utilisation¶
La fonction ne prend pas en charge les caractères génériques dans value_expr
. Toutefois, vous pouvez utiliser la fonction ARRAY_TO_STRING pour convertir un tableau en chaîne, puis effectuer une recherche dans la chaîne à l’aide de caractères génériques. Par exemple, vous pouvez spécifier des caractères génériques pour effectuer une recherche dans la chaîne renvoyée à l’aide des fonctions [ NOT ] LIKE et REGEXP_LIKE.
Exemples¶
Les requêtes suivantes utilisent la fonction ARRAY_CONTAINS dans une liste 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 |
+-----------------------------------------------------+
La requête suivante utilise la fonction ARRAY_CONTAINS dans une clause WHERE. Tout d’abord, créez une table avec une colonne ARRAY et insérez des données :
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 |
| | ] |
+----+--------------+
Exécutez une requête qui spécifie la valeur à rechercher pour value_expr
et la colonne ARRAY pour array
:
SELECT * FROM array_example WHERE ARRAY_CONTAINS(5, array_column);
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
| 2 | [ |
| | 4, |
| | 5, |
| | 6 |
| | ] |
+----+--------------+