- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Array/Objekt)
ARRAY_CONTAINS¶
Gibt TRUE zurück, wenn der angegebene Wert im angegebenen Array gefunden wird.
Syntax¶
ARRAY_CONTAINS( <value_expr> , <array> )
Argumente¶
value_expr
In
array
zu suchender Wert.Wenn
array
ein semistrukturiertes Array ist, mussvalue_expr
einen VARIANT ergeben.Wenn
array
ein strukturiertes Array ist, mussvalue_expr
einen Typ ergeben, der mit dem Array-Typ verglichen werden kann.
array
Das zu durchsuchende Array.
Rückgabewerte¶
Diese Funktion gibt einen Wert vom Typ BOOLEAN oder NULL zurück:
Die Funktion gibt TRUE zurück, wenn
value_expr
inarray
vorhanden ist.Die Funktion gibt FALSE zurück, wenn
value_expr
nicht inarray
vorhanden ist.Die Funktion gibt NULL zurück, wenn das
value_expr
Argument NULL ist und es keine NULL-Werte im Array gibt.Wenn das Argument
value_expr
NULL lautet und ein Wert NULL in dem Array vorhanden ist, gibt die Funktion TRUE zurück.
Nutzungshinweise¶
Die Funktion unterstützt keine Platzhalter in value_expr
. Sie können jedoch die Funktion ARRAY_TO_STRING verwenden, um ein Array in eine Zeichenfolge zu konvertieren und dann die Zeichenfolge mit Platzhaltern zu durchsuchen. Sie können zum Beispiel Platzhalter angeben, um die zurückgegebene Zeichenfolge mit den Funktionen [ NOT ] LIKE und REGEXP_LIKE zu durchsuchen.
Beispiele¶
Die folgenden Abfragen verwenden die Funktion ARRAY_CONTAINS in einer SELECT-Liste:
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 |
+-----------------------------------------------------+
Die folgende Abfrage verwendet die Funktion ARRAY_CONTAINS in einer WHERE-Klausel. Erstellen Sie zunächst eine Tabelle mit einer ARRAY-Spalte und fügen Sie Daten ein:
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 |
| | ] |
+----+--------------+
Führen Sie eine Abfrage aus, die den zu suchenden Wert für value_expr
und die ARRAY-Spalte für array
angibt:
SELECT * FROM array_example WHERE ARRAY_CONTAINS(5, array_column);
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
| 2 | [ |
| | 4, |
| | 5, |
| | 6 |
| | ] |
+----+--------------+