• hive 空值判断


    hive 空值判断

    20190903


    • hive中空值判断基本分两种

    一、NULLN

    hive在底层数据中如何保存和标识NULL,是由 serialization.null.format参数控制.

    • N
    alter table table_name SET SERDEPROPERTIES('serialization.null.format' = 'N');
    

    设置 serialization.null.format' = 'N',则底层数据保存的是'N',通过查询显示的是'NULL'

    • 查询语句
    select * from table_name where column is null ;
    select * from table_name where column = '\N' ;
    
    • NULL
    alter table table_name SET SERDEPROPERTIES('serialization.null.format' = 'NULL');
    

    2.设置 serialization.null.format' = 'NULL', 则底层数据保存的是'NULL',通过查询显示的是'NULL'

    • 查询语句
    select * from table_name where column is null ;
    select * from table_name where column = 'NULL' ;
    

    二、'' length(XX)=0

    表示字段不为null且为空字符串,此时用 column is null 是无法查到这种值的,可通过以下语句查询

    select * from table_name where column = '' ;
    select * from table_name where length(column) = 0 ;
    

    三、不同数据类型对空值的存储规则

    (1)不同数据类型对空值的存储规则

    • intstring类型数据存储,null默认存储为 N

    • string类型的数据如果为"",存储则是""

    • 另外往int类型的字段插入数据""时,结果还是N

    (2)不同数据类型,空值的查询

    • int可以使用is null来判断空;

    • string类型,条件is null 查出来的是N的数据;而条件 = '',查询出来的是""(即空字符串)的数据。

    • 判断空时要根据实际的存储来进行判断。在开发过程中如果需要对空进行判断,一定得知道存储的是哪种数据。

    • Hive给出一种并非完美的解决方法——自定义底层用什么字符来表示NULL

    alter table table_name SET SERDEPROPERTIES('serialization.null.format' = '');
    

    这句话的意思是让null''等价,也就是让null不显示,因为null对开发来说不好操作,可能不同地方代表意义不同,而且转码可能也会有问题,所有用''代替。

    备注

    参考资料

    hive 空值处理
    hive中空值判断
    hive中空值判断
    SQL Server 帮助文档

  • 相关阅读:
    模板方法模式
    结构型模式
    组合模式
    享元模式
    [STL离散化]Skyscrapers的lower_bound系列
    [水]浙大校赛补题
    [数]来自亮亮OJ的五道数学题
    [数]被数学淹没不知所措
    [tour]2019HUST onsite签到
    [树组BIT]训练两题重新理解ver.
  • 原文地址:https://www.cnblogs.com/damahuhu/p/11675600.html
Copyright © 2020-2023  润新知