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

  • 相关阅读:
    位运算(转自matrix67)
    STL学习之priority_queue适配器
    asp.net_缓存管理
    Tomcat安装配置
    CSS选择器(中)——高级选择器
    CSS选择器(下)——高级选择器再续
    Oracle学习记录——使用自定义函数和触发器实现主键动态生成
    Oracle安装配置—64位Win7安装配置64位Oracle
    CSS选择器(中)——高级选择器续
    Windows7操作系统自定义运行命令(简单方法之二)
  • 原文地址:https://www.cnblogs.com/damahuhu/p/11675600.html
Copyright © 2011-2022 走看看