- 类别:
半结构化和结构化数据函数 (数组/对象)
ARRAY_CONTAINS¶
如果在指定的数组中找到指定值,则返回 TRUE。
语法¶
ARRAY_CONTAINS( <value_expr> , <array> )
实参¶
返回¶
此函数返回 BOOLEAN 类型的值或 NULL:
如果
array
中存在value_expr
,则函数返回 TRUE。如果
array
中不存在value_expr
,则函数返回 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 |
| | ] |
+----+--------------+