ARRAY_MATCH_ANY
描述
检查数组中是否有任何元素满足给定条件。如果数组包含 NULL 元素且所有非 NULL 元素都不满足条件,则返回 NULL。
语法
array_match_any(lambda, <arr> [, <arr> ...])
参数
lambda
: 定义检查条件的 lambda 表达式<arr>
: 一个或多个要检查的数组。lambda 函数将应用于这些数组的每个元素
返回值
返回一个可空的布尔值:
- 如果数组中任何元素满足条件,则返回
true
- 如果数组中所有元素都不满足条件,则返回
false
- 如果数组包含 NULL 元素且所有非 NULL 元素都不满足条件,则返回
NULL
示例
-- 检查数组中是否有任何数字大于 5
mysql> SELECT array_match_any(x -> x > 5, [1, 2, 3, 4, 7]);
+----------------------------------------------+
| array_match_any(x -> x > 5, [1, 2, 3, 4, 7]) |
+----------------------------------------------+
| 1 |
+----------------------------------------------+
-- 检查数组中是否有任何数字大于另一个数组中对应位置的数字
mysql> SELECT array_match_any((x, i) -> x > i, [1, 2, 3, 4, 5], [1, 2, 3, 4, 7]);
+--------------------------------------------------------------------+
| array_match_any((x, i) -> x > i, [1, 2, 3, 4, 5], [1, 2, 3, 4, 7]) |
+--------------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------------+
mysql> SELECT array_match_any((x, i) -> i > x, [1, 2, 3, 4, 5], [1, 2, 3, 4, 7]);
+--------------------------------------------------------------------+
| array_match_any((x, i) -> i > x, [1, 2, 3, 4, 5], [1, 2, 3, 4, 7]) |
+--------------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------------+
注意事项
-
函数处理 NULL 值的方式:
- 如果存在 NULL 元素且所有非 NULL 元素都不满足条件,则返回 NULL
- 如果任何非 NULL 元素满足条件,则无论是否存在 NULL 元素都返回 true
-
该函数适用于:
- 检查数组中是否有任何元素满足特定条件
- 与其他数组函数组合进行复杂的数组操作