最后于 更新
MAP_ALL
描述
使用 Lambda 表达式检查 Map 中的每一个键值对,并判断所有键值对是否都满足指定条件。Lambda 表达式接收每个键值对的键和值作为参数。
语法
MAP_ALL((<key>, <value>) -> <predicate>, <map>)
参数
| 参数 | 描述 |
|---|---|
<key> | Lambda 参数,表示 Map 元素的键。 |
<value> | Lambda 参数,表示 Map 元素的值。 |
<predicate> | 对每个 Map 元素求值的布尔表达式。 |
<map> | MAP<K, V> 类型的表达式。 |
返回值
返回 BOOLEAN 类型的值。
- 如果任意一个元素的判断结果为
FALSE,返回FALSE。 - 如果所有元素的判断结果均为
TRUE,返回TRUE;空 Map 也返回TRUE。 - 如果没有元素的判断结果为
FALSE,但至少有一个元素的判断结果为NULL,返回NULL。 - 如果
<map>为NULL,返回NULL。
示例
SELECT map_all((k, v) -> v >= 10, map(1, 10, 2, 20)) AS result;
+--------+
| result |
+--------+
| 1 |
+--------+
SELECT map_all((k, v) -> v > 10, map(1, 10, 2, 20)) AS result;
+--------+
| result |
+--------+
| 0 |
+--------+
SELECT map_all((k, v) -> CAST(NULL AS BOOLEAN), map(1, 10)) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+
SELECT map_all((k, v) -> v > 0, CAST(NULL AS MAP<INT, INT>)) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+