hive条件查询

1、语法

条件语句描述返回
Isnull( a )当(a)的值为NULL时,此方法返回true,否则返回false。Return: boolean
Isnotnull ( a )当(列)的值不为NULL时,此方法返回true,否则返回false。Return: boolean
If(boolean testCondition, T valueTrue, T valueFalseOrNull)类似于SQL查询中存在的IF条件。当testConditiontrue时,此方法返回valueTrue,否则返回valueFalseOrNullReturn: T
Nvl(T value, T default_value)这会将列T的所有空值替换为默认值Return: T
COALESCE(T v1, T v2, …)返回不为NULL的第一个v,如果所有v均为NULL,则返回NULL。Return: T
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END这类似于switch语句,其中当a = b时,返回c; 当a = d时,返回e; 否则返回f。Return: T
CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END当a = true时,返回b; 当c = true时,返回d; 否则返回e。Return: T
Nullif( a, b )Return: T
Assert_true(boolean condition)

2、演示样例

CREATE TABLE IF NOT EXISTS employee (
 id int,
 name string,
 age int,
 gender string,
 salary decimal
)
COMMENT 'Employee Table'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

3、数据

1,James,30,M,10000
2,Ann,40,F,20000
3,Jeff,41,M,30000
4,Jennifer,20,F,40000
5,Kum,30,M,
7,Jeni,,,

4、实例

4.1 Isnull( a )

当(列)的值为NULL时,此方法返回true,否则返回false。


hive> select salary ,isnull(salary) from employee where gender="M";

10000	false
30000	false
NULL	true

4.2 Isnotnull(a)

当(列)的值不为NULL时,此方法返回true,否则返回false。

hive> select salary ,isnull(salary) from employee where gender="M";

10000	true
30000	true
NULL	false

4.3 If(boolean testCondition, T valueTrue, T valueFalseOrNull)

类似于SQL查询中存在的IF条件。如果testCondition为true,则返回valueTrue,否则返回valueFalseOrNull

句法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)

hive> select salary ,if(isnull(salary),'No Salary','Present Salary') from employee where gender="M";

10000	Present Salary
30000	Present Salary
NULL	No Salary

4.4 Nvl(T value, T default_value)

这会将列T的所有空值替换为默认值

select salary ,Nvl(salary ,-1) from employee where gender="M";

10000	10000
30000	30000
NULL	-1

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

这类似于switch语句,其中当a = b时,返回c; 当a = d时,返回e; 否则返回f。

hive> select salary, case salary when 10000 then 1
    > when 30000 then 3
    > else -1
    > end
    > from employee where gender ="M";

10000	1
30000	3
NULL	-1


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

当a = true时,返回b; 当c = true时,返回d; 否则返回e。

hive> select salary,gender,
    > case when salary <10001 then 1
    > when salary >10001 then 3
    > else -1
    > end
    > from employee where gender="M";

10000	M	1
30000	M	3
NULL	M	-1


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值