天天看点

sql 语句 CASE表达式用法1、case表达式:case简单用法:

1、case表达式:

简单CASE 表达式:

CASE sex

WHEN ‘1’ THEN ‘男’

WHEN ‘2’ THEN ‘女’

ELSE ‘其他’ END

搜索CASE 表达式:

CASE sex

WHEN ‘1’ THEN ‘男’

WHEN ‘2’ THEN ‘女’

ELSE ‘其他’ END

注解:

简单 CASE 表达式能写的条件,搜索 CASE 表达式也能写

1、排他性

2、统一返回数据类型

3、要写END

4、养成写ELSE的习惯,默认为NULL

case简单用法:

eg1:将已有编号方式转换为新的方式并统计

sql 语句 CASE表达式用法1、case表达式:case简单用法:

SELECT *,case when pref_name in (‘苏州’,‘南京’) then ‘江苏’ when pref_name = ‘合肥’ then ‘安徽’ else ‘中国’ end as district,sum(population) as sum

from test.PopTbl group by district having sum >200 order by sum

注解: mysql数据库 是先执行select子句,再执行group by的,所以拿新列group by,having也是

,sql/oracle反之

将行数据转化成列数据

eg2:用一条 SQL 语句进行不同条件的统计(聚合函数使用case)

sql 语句 CASE表达式用法1、case表达式:case简单用法:

select sum(case when sex =1 then case when population>0 then population else 0 end else 0 end) as ‘男’,sum(case when sex =2 then population else 0 end) as ‘女’,pref_name from test.PopTbl group by pref_name order by pref_name

注解:union也可

可嵌套 case when then else end 多条件约束(蕴含式)

蕴含式和逻辑与(logical product)的区别。逻辑与也是一个逻辑表达式,意思是“P 且 Q”,记作 P ∧ Q。蕴含式 P→Q

eg3:在 UPDATE 语句里进行条件分支

sql 语句 CASE表达式用法1、case表达式:case简单用法:

update test.salaries set salary = case when salary >=300000 then salary * 0.9 when salary

<250000 then salary * 1.2 else salary end where id>0

同 select 多个条件分支查询 应用范围:调换