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 帮助文档

  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/damahuhu/p/11675600.html
Copyright © 2011-2022 走看看