欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive(26):case when 和 cast

程序员文章站 2024-03-12 20:40:44
...

一、case when

1.针对表

emp.empno       emp.ename       emp.job emp.mgr emp.hiredate    emp.sal emp.comm        emp.deptno
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
7499    ALLEN   SALESMAN        7698    1981-2-20       1600.0  300.0   30
7521    WARD    SALESMAN        7698    1981-2-22       1250.0  500.0   30
7566    JONES   MANAGER 7839    1981-4-2        2975.0  NULL    20

2.case when的两种格式

(1)简单格式

CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' 
END

(2)搜索格式 

CASE 
WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' 
END

  备注:简单格式处理不了null的,所以最好用搜索格式!

3.需求:将emp表的奖金这列如果说没有显示0而不是null

select empno,ename,
case 
when comm is null then 0
else comm
end
from emp;

4.需求:按薪资排序高中低

select empno,ename,
case 
when sal<1000 then 'low'
when sal>=1000 and sal <3000 then 'middle'
else 'high'
end  as new_sal
from emp;

二、cast

1.功能:类型的一个转换

2.实例:将int转换为string

create table casttest as select empno,ename,cast(sal as string) new_sal from emp;
或者
create table casttest2 as select empno,ename,cast(sal as string)  as new_sal from emp;