Hive零基础从入门到实战 进阶篇(七) HiveQL:条件函数

目录

 

前言

1. 条件函数表

2. 函数功能演示

2.1 空值判断函数

2.1.1 nvl(T value, T default_value)

2.1.2 isnull( a )

2.1.3 isnotnull ( a )

2.1.4 coalesce(T v1, T v2, ...)

2.2 条件判断函数

2.2.1 if函数

2.2.2 CASE  WHEN  THEN END函数


 

前言

本篇博客介绍Hive中的常见的条件函数用法~

 

1. 条件函数表

返回数值类型 函数名\所需参数\参数数据类型 描述

T

if(boolean testCondition, T valueTrue, T valueFalseOrNull)

如果testCondition 为true就返回valueTrue,否则返回valueFalseOrNull。(valueTrue,valueFalseOrNull可以是任意类型的返回值)

boolean isnull( a ) 如果a为null就返回true,否则返回false
boolean isnotnull ( a ) 如果a为非null就返回true,否则返回false
T nvl(T value, T default_value) 如果value值为NULL就返回default_value,,如果不为null就返回value本身

T

coalesce(T v1, T v2, ...)

返回第一非null的值,如果全部都为NULL就返回NULL  如:coalesce(NULL,44,55)=44

T

CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

如果a=b就返回c,a=d就返回e,否则返回f  如CASE 4 WHEN 5  THEN 5 WHEN 4 THEN 4 ELSE 3 END 将返回4

T

CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

如果a=ture就返回b,c= ture就返回d,否则返回e  如:CASE WHEN  5>0  THEN 5 WHEN 4>0 THEN 4 ELSE 0 END 将返回5;CASE WHEN  5<0  THEN 5 WHEN 4<0 THEN 4 ELSE 0 END 将返回0

 

2. 函数功能演示

2.1 空值判断函数

isnull( a )
isnotnull ( a )
nvl(T value, T default_value)

coalesce(T v1, T v2, ...)

2.1.1 nvl(T value, T default_value)

功能:

如果value的值为NULL就返回default_value,如果不为null就返回value本身。value和default_value可以是任何数据类型的值,可以是多层其他函数嵌套的返回结果。(常用)

举例:

第一个参数为NULL就返回第二个参数
hive (app)> select nvl (null,'hzy');
hzy

第一个参数不为NULL就返回第一个参数本身
hive (app)> select nvl ('ytr','hzy');
ytr

2.1.2 isnull( a )

功能:

a可以为任意数据类型的值,如果a为null就返回true,否则返回false。(不常用)

举例:

hive (app)> select isnull(null);
true

hive (app)> select isnull(1);
false

2.1.3 isnotnull ( a )

功能:

功能与isnull相反,a可以为任意数据类型的值,如果a不为null就返回true,否则返回false。(不常用)

举例:

hive (app)> select isnotnull (null);
false

hive (app)> select isnotnull (1);
true

2.1.4 coalesce(T v1, T v2, ...)

功能:

返回参数中第一个不是null的值,如果全部都为NULL就返回NULL,可以传任意个参数。(不常用)

举例:

hive (app)> select coalesce(NULL,44,55);
44

hive (app)> select coalesce(NULL,NULL,55);
55

 

2.2 条件判断函数

if(boolean testCondition, T valueTrue, T valueFalseOrNull)

CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

2.2.1 if函数

if(boolean testCondition, T valueTrue, T valueFalseOrNull)

功能:

if(条件表达式,结果1,结果2),类似java中的三目运算符。如果条件表达式testCondition 为true,就返回结果1 valueTrue,否则返回结果2 valueFalseOrNull。(valueTrue,valueFalseOrNull可以是任意类型的返回值)

举例:

hive (app)> select if(1=1,'hzy','ytr');
hzy

hive (app)> select if(1=2,'hzy','ytr');
ytr

2.2.2 CASE  WHEN  THEN END函数

CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END (不常用)

功能:

如果a等于b,那么返回c;如果a等于d,那么返回e;后面还可以有无数个[WHEN d THEN e],最后else可以省略,加else会将剩余结果归到这一类, 不加else如果有剩余结果未被归类会返回NULL。

其中的a、b、c、d、e、f等既可以是一个表字段,也可以是自己自定义的内容。

这个函数因为限定了只能是等于的关系,且可以被下面的case函数替代,所以使用较少。

举例:

hive (app)> select case 1 when 1 then 'hzy' else 'ytr' end;
hzy

hive (app)> select case 1 when 2 then 'hzy' else 'ytr' end;
ytr

CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END (常用)

功能:

如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e。

这里所有WHEN与THEN之间的都必须是条件表达式,只能是TRUE或者FALSE的结果,否则会报错。其余THEN后的返回项既可以是一个表字段,也可以是自己自定义的内容。

举例:

hive (app)> select case when 1=1 then 'hzy' else 'ytr' end;
hzy

hive (app)> select case when 1=2 then 'hzy' else 'ytr' end;
ytr

 


能看到这里的同学,就右上角点个赞吧,3Q~

你可能感兴趣的:(Hive零基础从入门到实战 进阶篇(七) HiveQL:条件函数)