1、等值判断,相当于switch case
CASE expression
WHEN value1 THEN returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3 ELSE defaultreturnvalue END 例如: case level when 1 then '大叔' when 2 then '二叔' when 3 then '小叔' end相当于Switch,只能等值判断。
- case level
- when 1 then '大叔'
- when 2 then '二叔'
- when 3 then '小叔'
- end
- )
- from userinfo
select username,叔级别=( case level when 1 then '大叔' when 2 then '二叔' when 3 then '小叔' end) from userinfo
其结果为:~~~
2、区间判断
CASE
WHEN condition1 THEN returnvalue1 WHEN condition 2 THEN returnvalue2 WHEN condition 3 THEN returnvalue3 ELSE defaultreturnvalue END 相当于if…else if…else….(可以进行区间判断) 注意:then后面返回的数据类型要一致, returnvalue1、 returnvalue2、 returnvalue3的数据类型必须一致。
- select username,年纪=(
- case
- when age between 28 and 30 then '大叔'
- when age between 25 and 27 then '大青年'
- when age between 20 and 24 then '骚年'
- when age < 20 then '小屁孩'
- else 'baby'
- end
- )
- from userinfo2
select username,年纪=( case when age between 28 and 30 then '大叔' when age between 25 and 27 then '大青年' when age between 20 and 24 then '骚年' when age < 20 then '小屁孩' else 'baby' end)from userinfo2
3、实际案例扯淡
1、一般论坛中的用户等级
论坛中用户的等
case BBSlevel when 1 then '骨灰' when 2 then '大虾' when 3 then '菜鸟' end2、订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>10W金牌,>5W银牌,>1W铜牌,否则普通)
3、电商用户 根据用户消费总额 予以不同的等级4、游戏行业 玩家等级
单号 金额
RMB1 10RMB2 20RMB3 -30RMB4 -10将上面的表输出为如下的格式:单号 收入 支出RMB1 10 0RMB2 20 0RMB3 0 30RMB4 0 10
- select number,
- (
- case
- when amount > 0 then amount
- else 0
- end
- ) 收入,
- (
- case
- when amount < 0 then abs(amount)
- else 0
- end
- ) 支出
- from test
select number,( case when amount > 0 then amount else 0 end) 收入,( case when amount < 0 then abs(amount) else 0 end ) 支出from test