我有一个简单的查询,以获得所有类,这是不是'的Hive'。我的数据如下
Account class
3000337430920208808 NULL
3000337394422514891 NULL
3000337317010916590 NULL
3000337153318453626 NULL
3000337129720896321 NULL
我已经把这个问题写成
select account_number,service_class from cdx_eligibility where account_number='3000337430920208808' and service_class not in ('RS');
我没有得到这个帐户的输出。理想情况下为空<>rs(因此为true,应该返回record)。但我没有任何记录。我们需要以不同的方式处理空值吗?我还尝试了几个选项(!=,<>,不在)。请建议。
2条答案
按热度按时间uttx8gqw1#
看起来配置单元无法正确处理“in”子句的空值,此解决方法应该可以工作
vh0rcniy2#
这不是配置单元问题,这是sql的工作方式。当你把rs和
null
,它不返回任何东西,不是真的或假的。你不能这么做'foo' = null
任何一个。这就是为什么在字符字段中允许空值是一种痛苦的原因。如果必须有空值,则使用where coalesce(service_class,'') not in ('RS')
.这样,您就可以将空字符串与“rs”进行比较,正如您所期望的那样。