exists:存在性判断
速查结论
exists(expr, pred) 是 Spark SQL 中用于判断数组中是否存在至少一个元素满足给定条件的函数。
语法
exists(expr, pred)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| expr | ARRAY | 要测试的输入数组 |
| pred | LAMBDA | 谓词函数,接受一个数组元素作为参数,返回布尔值 |
返回值
- 如果数组中存在至少一个元素满足谓词条件,返回 true。
- 如果所有元素都不满足条件,返回 false。
- 如果没有元素满足条件且谓词对某个元素返回 null(通常因为元素为 null),则返回 null。
示例
> SELECT exists(array(1, 2, 3), x -> x % 2 == 0);
true
> SELECT exists(array(1, 2, 3), x -> x % 2 == 10);
false
> SELECT exists(array(1, null, 3), x -> x % 2 == 0);
NULL
> SELECT exists(array(0, null, 2, 3, null), x -> x IS NULL);
true
> SELECT exists(array(1, 2, 3), x -> x IS NULL);
false
常见报错与避坑指南
- null 元素导致返回 null:当数组包含 null 元素,且没有其他元素满足条件时,函数返回 null。这是因为 null 元素使谓词返回 null(而非 false),而三值逻辑中
true OR null = true,但false OR null = null。如果需要确定性的布尔结果,使用COALESCE(exists(...), false)将 null 转为 false。 - 与 SQL EXISTS 子句区分:此函数是数组函数,作用于数组列;不要与 SQL 中的
WHERE EXISTS (subquery)子查询语法混淆。
Since: 2.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
