in:集合成员判断
速查结论
expr1 in(expr2, expr3, ...) 是 Spark SQL 中用于判断表达式值是否在给定集合中的运算符。
语法
expr1 in(expr2, expr3, ...)
参数说明
| 参数 | 说明 |
|---|---|
| expr1 | 待匹配的表达式。 |
| expr2, expr3, ... | 候选值列表,expr1 与其中任一值相等则返回 true。 |
返回说明
如果 expr1 等于候选列表中的任何一个值,则返回 true;否则返回 false。
示例
> SELECT 1 in(1, 2, 3);
true
> SELECT 1 in(2, 3, 4);
false
> SELECT named_struct('a', 1, 'b', 2) in(named_struct('a', 1, 'b', 1), named_struct('a', 1, 'b', 3));
false
> SELECT named_struct('a', 1, 'b', 2) in(named_struct('a', 1, 'b', 2), named_struct('a', 1, 'b', 3));
true
常见报错与避坑指南
- NULL 参与比较:如果
expr1为 NULL,in()返回 NULL(而非 false),在 WHERE 条件中可能导致预期外的过滤行为。 - 复合类型比较:
in()支持 struct 等复合类型比较,但需确保字段顺序和类型完全匹配。 - 大列表性能:候选列表较小时效率很高,但如果列表极大,考虑使用 JOIN 或临时表替代。
Since: 1.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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