跳到主要内容

ARRAY_MATCH_ALL

描述

检查数组中的所有元素是否都满足给定条件。如果数组包含 NULL 元素且所有非 NULL 元素都满足条件,则返回 NULL。

语法

array_match_all(lambda, <arr> [, <arr> ...])

参数

  • lambda: 定义检查条件的 lambda 表达式
  • <arr>: 一个或多个要检查的数组。lambda 函数将应用于这些数组的每个元素

返回值

返回一个可空的布尔值:

  • 如果数组中所有元素都满足条件,则返回 true
  • 如果数组中任何元素不满足条件,则返回 false
  • 如果数组包含 NULL 元素且所有非 NULL 元素都满足条件,则返回 NULL

示例

-- 检查数组中的所有数字是否都大于 5
mysql> SELECT array_match_all(x -> x > 5, [1, 2, 3, 4, 7]);
+----------------------------------------------+
| array_match_all(x -> x > 5, [1, 2, 3, 4, 7]) |
+----------------------------------------------+
| 0 |
+----------------------------------------------+

-- 检查数组中的所有数字x是否都大于数字i
mysql> SELECT array_match_all((x, i) -> x > i, [1, 2, 3, 4, 5], [1, 2, 3, 4, 7]);
+--------------------------------------------------------------------+
| array_match_all((x, i) -> x > i, [1, 2, 3, 4, 5], [1, 2, 3, 4, 7]) |
+--------------------------------------------------------------------+
| 0 |
+--------------------------------------------------------------------+

注意事项

  1. 函数处理 NULL 值的方式:

    • 如果存在 NULL 元素且所有非 NULL 元素都满足条件,则返回 NULL
    • 如果任何非 NULL 元素不满足条件,则无论是否存在 NULL 元素都返回 false
  2. 该函数适用于:

    • 验证数组中的所有元素是否满足特定条件
    • 与其他数组函数组合进行复杂的数组操作