zoukankan      html  css  js  c++  java
  • 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 帮助文档

  • 相关阅读:
    并行和并发
    怎样用第三方开源免费软件portecle从https站点上导出SSL的CA证书?
    我持续推动Rust语言支持Windows XP系统
    Android——4.2.2 文件系统文件夹分析
    hadoop(八)
    自己定义html中a标签的title提示tooltip
    多个返回 顶部的代码
    同学们,OpenCV出3.0了,速去围观!
    hdu1002
    好记性不如烂笔头(一)
  • 原文地址:https://www.cnblogs.com/damahuhu/p/11675600.html
Copyright © 2011-2022 走看看