カテゴリ:

半構造化データ関数と構造化データ関数 (配列/オブジェクト)

ARRAY_CONTAINS

指定された値が指定された配列で見つかった場合、 TRUE を返します。

構文

ARRAY_CONTAINS( <value_expr> , <array> )
Copy

引数

value_expr

array で見つかる値。

array

検索する配列。

戻り値

この関数は BOOLEAN 型の値または NULL を返します。

  • この関数は、 value_exprarray に存在する場合、 TRUE を返します。

  • この関数は、 value_exprarray に存在しない場合に、 FALSE を返します。

  • この関数は、 value_expr 引数が NULL で、配列に NULL の値がない場合、 NULL を返します。

    value_expr 引数が NULL で、配列に NULL の値がある場合、関数は TRUE を返します。

使用上の注意

関数は value_expr でワイルドカードをサポートしません。しかし、 ARRAY_TO_STRING 関数を使って配列を文字列に変換してから、ワイルドカード文字を使って文字列を検索することはできます。たとえば、 [ NOT ] LIKEREGEXP_LIKE 関数を使って、ワイルドカードを指定して返された文字列を検索することができます。

以下のクエリは SELECT リストで ARRAY_CONTAINS 関数を使用します。

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                                                |
+-----------------------------------------------------+

以下のクエリは WHERE 句で ARRAY_CONTAINS 関数を使用します。まず、 ARRAY 列を持つテーブルを作成し、データを挿入します。

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          |
|    | ]            |
+----+--------------+

value_expr に検索する値と array に ARRAY 列を指定するクエリを実行します。

SELECT * FROM array_example WHERE ARRAY_CONTAINS(5, array_column);
Copy
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
|  2 | [            |
|    |   4,         |
|    |   5,         |
|    |   6          |
|    | ]            |
+----+--------------+