数据库其它

关注公众号 jb51net

关闭
首页 > 数据库 > 数据库其它 > Hive中NULL理解

一文详解在Hive中NULL的理解

作者:龙大.

在Hive中,NULL表示的是异常,这篇文章主要介绍了在Hive中NULL理解的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用Hive具有一定的参考借鉴价值,需要的朋友可以参考下

前言

在 Hive 中,NULL 是一个特殊的值,表示“未知”或“缺失”。任何与 NULL 的比较操作(如 =, >, <, >=, <=, <>)都会返回 NULL,而不是 TRUEFALSE

1.NULL 的比较规则

在 Hive(以及大多数 SQL 数据库)中,NULL 的比较遵循 三值逻辑(Three-Valued Logic)

任何与 NULL 的比较结果都是 UNKNOWN(即 NULL)

2.具体示例

假设有一个表 test

value
5
NULL
3

2.1NULL > 1返回什么?

SELECT value, value > 1 AS result FROM test;

结果:

valueresult
5true
NULLNULL
3true

2.2NULL = NULL返回什么?

SELECT NULL = NULL AS result;

结果: NULL(不是 true!)

2.3IS NULL和IS NOT NULL

SELECT value, value IS NULL AS is_null FROM test;

结果:

valueis_null
5false
NULLtrue
3false

3.WHERE 子句中的 NULL 行为

SELECT * FROM test WHERE value > 1;

结果:

value
5
3

如果你想保留 NULL,必须显式判断:

SELECT * FROM test WHERE value > 1 OR value IS NULL;

4.NULL 的逻辑运算

5.如何正确处理 NULL

5.1 使用IS NULL/IS NOT NULL

SELECT * FROM test WHERE value IS NULL;

5.2 使用COALESCE提供默认值

SELECT COALESCE(value, 0) AS safe_value FROM test;

5.3 使用NVL(Hive 特有)

SELECT NVL(value, 0) AS safe_value FROM test;

5.4 使用CASE WHEN

SELECT 
    CASE 
        WHEN value IS NULL THEN 'Missing'
        WHEN value > 1 THEN 'Large'
        ELSE 'Small'
    END AS category
FROM test;

6.总结

操作结果
NULL > 1NULL
NULL = NULLNULL
value IS NULLTRUE/FALSE
WHERE value > 1过滤掉 NULL
COALESCE(value, default)提供默认值

核心原则

如需处理复杂空值逻辑,建议结合 COALESCECASE WHEN 等函数。

到此这篇关于在Hive中NULL理解的文章就介绍到这了,更多相关Hive中NULL理解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文