类别:

半结构化和结构化数据函数 (数组/对象)

ARRAY_CONTAINS

如果在指定的数组中找到指定值,则返回 TRUE。

语法

ARRAY_CONTAINS( <value_expr> , <array> )
Copy

实参

value_expr

要在 array 中查找的值。

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 ] 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          |
|    | ]            |
+----+--------------+
语言: 中文