hive 条件判断函数

本文详细介绍了SQL中处理单列值查询的几个关键函数,包括IF函数的用法,展示了如何根据条件判断返回不同值。同时,讲解了非空查询函数COALESCE及CASE WHEN的不同形式,如简单的CASE WHEN和并列CASE WHEN,以及如何通过NULLIF函数来处理空值。这些函数在数据查询和处理中起着重要作用,帮助开发者更灵活地操控数据。
摘要由CSDN通过智能技术生成

1. if 函数

  • 同case,nvl,都是处理单个列值的查询结果

  • 语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)

当条件testCondition为True,返回valueTrue;否则返回valueFalseOrNull
例子:

-- if 语句语法,请为 Null 的设置为 0
SELECT if(var IS NULL, 0 ,var) AS var_name
-- 满足一定条件的总数,Null count() 不计数
SELECT count(if(score>=80, score, NULL)) AS good
-- case when 枚举翻译
SELECT page_id AS page_id,
      CASE page_id
          WHEN 001 THEN '第一名'
          WHEN 002 THEN '第二名'
          ELSE '-'
      END AS name

2. 非空查询函数

2.1. COALESCE(T v1, T v2, …)

  • 返回第一个不为 Null 的值;若都为null,则返回null
  • 例子
coalesce(a3.salary,0)

2.2. CASE WHEN condition THEN value1 ELSE value2

  • 当符合条件时,返回条件value1;否则返回value2
  • 例子
SELECT page_id AS page_id,
      CASE page_id
          WHEN 001 THEN '第一名'
          WHEN 002 THEN '第二名'
          ELSE '-'
      END AS name

2.3. 并列 CASE WHEN

  • case 表达式,同java的switch 表达式;符合某个conditionX,则返回对应resultx;若无匹配,则返回ELSE 逻辑reuslt
  • 格式
CASE  [ expression]
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultn
ELSE result
END

2.4. case when 嵌套 [较少使用,可用 2.3部分 代替]

  • 当满足当前case when condition1,则进入该逻辑,如符合内层 when condition2 ,则返回当前result1,如果符合condition3,则返回 result2;否则返回ELSE 分支result3
  • 格式 如果condition匹配到condition2
CASE   condition1 WHEN condition2 THEN result1 [WHEN condition3 THEN result2]* [ELSE  result3 ] END 

3. 判空函数

3.1. nvl(a,b)

  • 若a为空,则返回b,否则为a
  • 例子
select concat(nvl(cast(a as string), 'na'),nvl(cast(b as string),'na')) from tmp

3.2. nullif(a,b)

  • a=b时,返回null,否则为a
  • 例子
select concat(nullif(a,'na'),nullif(b,'na')) from tmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值