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

问题描述 投票:0回答:1

我有一个样本数据集,如以下。

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 Name FROM Customers WHERE ReferredBy <> 2;

在SQL Server上,这将排除NULL值,所以我需要用下面的方式写。

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

HiveQL也有同样的问题吗?

*在我的原始数据集上很难测试出来,因为它是安静的大数据集,很少有遗漏。

谢谢!我有一个样本数据集,如:HiveQL。

sql hive hql hiveql
1个回答
2
投票

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

对于你的逻辑,你可以使用这个Hive扩展来实现以下功能 <=>:

where not (ReferredBy <=> 2)

负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: <=>NULL-安全比较,所以它对 NULL <=> NULL 和 "false "代表 NULL <=> 2而不是 NULL 在这两种情况下。 这大概是借鉴了MySQL的做法。

© www.soinside.com 2019 - 2024. All rights reserved.