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> )
Copy

Argumente

value_expr

In array zu suchender Wert.

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 in array vorhanden ist.

  • Die Funktion gibt FALSE zurück, wenn value_expr nicht in array 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'));
Copy
+------------------------------------------------------------------+
| ARRAY_CONTAINS('HELLO'::VARIANT, ARRAY_CONSTRUCT('HELLO', 'HI')) |
|------------------------------------------------------------------|
| True                                                             |
+------------------------------------------------------------------+
SELECT ARRAY_CONTAINS('hello'::VARIANT, ARRAY_CONSTRUCT('hola', 'bonjour'));
Copy
+----------------------------------------------------------------------+
| ARRAY_CONTAINS('HELLO'::VARIANT, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) |
|----------------------------------------------------------------------|
| False                                                                |
+----------------------------------------------------------------------+
SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', 'bonjour'));
Copy
+----------------------------------------------------------+
| ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('HOLA', 'BONJOUR')) |
|----------------------------------------------------------|
| NULL                                                     |
+----------------------------------------------------------+
SELECT ARRAY_CONTAINS(NULL, ARRAY_CONSTRUCT('hola', NULL));
Copy
+-----------------------------------------------------+
| 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;
Copy
+----+--------------+
| 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);
Copy
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
|  2 | [            |
|    |   4,         |
|    |   5,         |
|    |   6          |
|    | ]            |
+----+--------------+