HiveQL 逻辑过滤语句如何处理 NULL 值

HiveQL how logic filter statement treats NULL values

我有一个示例数据集,如下所示:

Id  Name            ReferredBy
1   John Doe        NULL
2   Jane Smith      NULL
3   Anne Jenkins        2
4   Eric Branford       NULL
5   Pat Richards        1
6   Alice Barnes        2

如果我想 select 所有未被 Jane Smith 推荐的记录,我将使用以下命令:

SELECT Name FROM Customers WHERE ReferredBy <> 2;

在 SQL 服务器上,这将排除 NULL 值,因此我需要按以下方式编写:

SELECT Name FROM Customers WHERE ReferredBy IS NULL OR ReferredBy <> 2

HiveQL 有同样的问题吗?

*很难在我拥有的原始数据集上对其进行测试,因为它非常大,几乎没有缺失。

谢谢!

NULL 的行为由 SQL 定义,所有数据库都遵守它。也就是说,该标准还指定了 NULL 安全比较运算符 IS NOT DISTINCT FROMIS DISTINCT FROM。 Hive 支持一个平等,但不支持那个。

根据您的逻辑,您可以将此 Hive 扩展用于 <=>

where not (ReferredBy <=> 2)

<=>NULL 安全比较,所以它 returns "true" 代表 NULL <=> NULL 和 "false" 代表 NULL <=> 2,而不是 NULL 在这两种情况下。这大概是从 MySQL.

借来的