我有一个样本数据集,如以下。
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。
的行为 NULL
是由SQL定义的,所有数据库都尊重它。 也就是说,该标准还规定了 NULL
安全比较运营商。IS NOT DISTINCT FROM
和 IS DISTINCT FROM
. Hive支持一个为平等,但不支持那个。
对于你的逻辑,你可以使用这个Hive扩展来实现以下功能 <=>
:
where not (ReferredBy <=> 2)
负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: <=>
是 NULL
-安全比较,所以它对 NULL <=> NULL
和 "false "代表 NULL <=> 2
而不是 NULL
在这两种情况下。 这大概是借鉴了MySQL的做法。