hive sql 在编写过程中难免会使用到 in 和 not in 的操作
in 和 not in 返回的是布尔值,在遇到NULL值的时候不会返回true和false
where a in (‘a’,‘b’) 指的是就只筛选出a等于a和b的集合,这个来说没什么问题
如果是 where a not in (‘a’,‘b’) 的时候,如果a列有NULL值的时候,这时候
NULL这一行不会记到最终的输出结果里,这可能和我们的初衷有偏差,我们只是不要a,b的这个集合,这样算出的结果会少于我们理想的输出结果
在hive中不等于和not in 类似,都会将为null的数据过滤掉
如果想保留为null的数据,可以这样写
where (a not in ('a','b') or a is null)
where (a <> 'a' or a is null)