一、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;