一、CASE表达式(类似DECODE,IF)
1、两种表达式
--简单case表达式
case sex
when '1' then '男'
when '2'then '女'
else '其它' end
--搜索case表达式
case
when sex='1'then '男'
when sex='1'then '女'
else '其它' end
注意事项:
- 各分支条件返回的数据类型必须一致;
- 不要忘记写end;
- 养成写else子句的习惯;
2、解决场景如下:
- 行列转化:将group by计算出来的一维表进行行列转换,变成类似数据透视图的二维表;
- 已有数据重新更新:用case的时候只执行一次,防止了用两次update的时候第一次被更新的值用在了第二次的语句中,重复更新发生错误;
- 与约束的结合:check是对列值输入的时候加了限制,在使用check加限制的时候结合case when可以结合其他的列进行限制,更加灵活;
- 表之间的数据匹配:不同的表匹配涉及到(in,exists的用法)
- 针对聚合结果的条件分支:在case中可以使用聚合函数,在聚合函数中也可以使用case表达式
- 特别说明:新手用where、having子句进行分支ÿ