[英]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 的行為由NULL
定義,所有數據庫都尊重它。 也就是說,該標准還指定NULL
安全比較運算符IS NOT DISTINCT FROM
和IS DISTINCT FROM
。 Hive 支持一個相等,但不支持那個。
對於您的邏輯,您可以將此 Hive 擴展用於<=>
:
where not (ReferredBy <=> 2)
The <=>
is the NULL
comparison, so it returns "true" for NULL <=> NULL
and "false" for NULL <=> 2
, instead of NULL
in both cases. 這大概是從 MySQL 借來的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.