- カテゴリ:
半構造化データ関数と構造化データ関数 (配列/オブジェクト)
ARRAY_CONTAINS¶
指定された値が指定された配列で見つかった場合、 TRUE を返します。
構文¶
ARRAY_CONTAINS( <value_expr> , <array> )
引数¶
戻り値¶
この関数は BOOLEAN 型の値または NULL を返します。
この関数は、
value_expr
がarray
に存在する場合、 TRUE を返します。この関数は、
value_expr
がarray
に存在しない場合に、 FALSE を返します。この関数は、
value_expr
引数が NULL で、配列に NULL の値がない場合、 NULL を返します。value_expr
引数が NULL で、配列に NULL の値がある場合、関数は TRUE を返します。
使用上の注意¶
関数は value_expr
でワイルドカードをサポートしません。しかし、 ARRAY_TO_STRING 関数を使って配列を文字列に変換してから、ワイルドカード文字を使って文字列を検索することはできます。たとえば、 [ NOT ] LIKE や REGEXP_LIKE 関数を使って、ワイルドカードを指定して返された文字列を検索することができます。
例¶
以下のクエリは SELECT リストで ARRAY_CONTAINS 関数を使用します。
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 |
+-----------------------------------------------------+
以下のクエリは 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;
+----+--------------+
| 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);
+----+--------------+
| ID | ARRAY_COLUMN |
|----+--------------|
| 2 | [ |
| | 4, |
| | 5, |
| | 6 |
| | ] |
+----+--------------+