sql - 即使满足条件,NULL值也不会作为查询的一部分出现

标签 sql hadoop hive

我有一个简单的查询来获取不是 hive 中的所有'RS'的所有类。我的数据如下所示

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');

我没有得到此帐户的输出。理想情况是NULL <> RS(因此它为true,应该返回记录)。但是我没有任何记录。我们是否需要以不同的方式处理NULL?我也尝试了几种选择(!=,<>,不在)。请提出建议。

最佳答案

这不是Hive的问题,而是SQL的工作方式。当您将'RS'与null进行比较时,它不会返回任何内容,不是true或false。您也不能'foo' = null。这就是为什么在字符字段中允许空值是一种痛苦的原因。如果必须具有空值,请使用where coalesce(service_class,'') not in ('RS')
这样,您就可以将一个空字符串与“RS”进行比较,这可以按您期望的那样工作。

关于sql - 即使满足条件,NULL值也不会作为查询的一部分出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42402982/

相关文章:

C# SQLServer 检索结果并以 .csv 格式放置

java - 在java中执行这个sql语句时我收到这个错误

sql - SAS Proc SQL 中的 CONVERT 语句

java - Spark SQL Hive Datanucleus jar 类路径

hadoop - 为什么分区+存储桶比从普通表查询花费更长的时间?

hadoop - 如何确定 Hive 表是外部表还是内部表?

sql - Oracle SQL 健全性检查 - 加入以获取最近创建的记录

hadoop 并行处理示例或文档

hadoop - 基于Hive的数据仓库任务-给记录添加序号

来自 HBase 的 Hadoop mapreduce 流