- 类别:
半结构化和结构化数据函数 (数组/对象)
ARRAY_CONTAINS¶
如果在指定的数组中找到指定值,则返回 TRUE。
语法¶
实参¶
返回¶
此函数返回 BOOLEAN 类型的值或 NULL:
函数返回 TRUE,前提是
value_expr存在于array中,包括以下情况:value_expr实参为 NULL,并且数组 (undefined) 中有 SQL NULL 值。value_expr实参为 JSON null,并且数组 (null) 中有 JSON null 值。
函数返回 FALSE,前提是
value_expr不存在于array中,包括以下情况:value_expr实参是 JSON null,并且数组中没有 JSON null 值。如果
value_expr实参为 NULL 且数组中没有 SQL NULL 值,则函数返回 NULL。
有关数组中 NULL 值的更多信息,请参阅 NULL 值。
使用说明¶
该函数不支持在
value_expr中使用通配符。但您可以使用 ARRAY_TO_STRING 函数将数组转换为字符串,然后使用通配符搜索字符串。例如,您可以使用通配符,利用 [ NOT ] LIKE 和 REGEXP_LIKE 函数搜索返回的字符串。如果
array是半结构化数组,则需要将以下数据类型的value_expr值 显式转换 为 VARIANT 值:以下示例将字符串值显式转换为 VARIANT 值:
其他数据类型的值不需要显式转换。
示例¶
以下查询在 SELECT 列表中使用 ARRAY_CONTAINS 函数。
在此示例中,函数返回 TRUE,因为 value_expr 实参是 'hello',并且数组中包含存储字符串 'hello' 的 VARIANT 值:
在此示例中,函数返回 FALSE,因为 value_expr 实参是 'hello',但数组中不包含存储字符串 'hello' 的 VARIANT 值:
在此示例中,函数返回 NULL,因为 value_expr 实参是 NULL,但数组中不包含 SQL NULL 值:
在此示例中,函数返回 TRUE,因为 value_expr 实参是 NULL,并且数组中包含 SQL NULL 值:
在此示例中,函数返回 TRUE,因为 value_expr 实参是 JSON null 值,并且数组中包含 JSON null 值:
在此示例中,函数返回 NULL,因为 value_expr 实参是 NULL,但数组中不包含 SQL NULL 值(尽管它包含 JSON null 值):
以下查询在 WHERE 子句中使用 ARRAY_CONTAINS 函数。首先,创建一个包含 ARRAY 列的表并插入数据:
运行一个查询,指定要为 value_expr 查找的值,以及要为 array 查找的 ARRAY 列: