跳到主要内容

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真题

交流微信二维码

你可能还想看