- A+
--- case表达式 ---
--要在一条select语句中进行复杂的条件计算,可以使用case表达式
--两种形式:
--1、simple case表达式
--语法:
CASE 列
WHEN 比较值1 THEN 返回值1
[WHEN 比较值2 THEN 返回值2...
WHEN 比较值n THEN 返回值n
ELSE 默认值]
END
--语义:将某个列值按书写顺序分别和某个when子句后面的比较值进行相等比较:
--一旦和某个when子句后面的比较值相等,则返回相应的then子句后面的返回值。
--如果和所有when子句后面的比较值都不相等,则返回else后面的默认值
--查询雇员的姓名,工作,薪水以及加薪后的薪水:
--如果是IT_PROG则加10%,如果是ST_CLERK,则加15%;如果是SA_REP则加20%。
--除此之外的所有雇员都不加薪
SELECT last_name,job_id,salary,
CASE job_id
WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "revised_salary"
from employees;
本文由 路远 首发于【路远网(http://www.luyuan.io)】
--2、searched case表达式
--语法:
CASE
WHEN 比较表达式1 THEN 返回值1
[WHEN 比较表达式2 THEN 返回值2...
WHEN 比较表达式n THEN 返回值n
ELSE 默认值]
END
--语义:按书写顺序分别执行when子句后面的比较表达式:
--如果某个when子句后面的比较表达式为true,则返回相应的then子句后面的返回值。
--如果所有when子句后面的比较表达式都不为true,则返回else后面的默认值
SELECT last_name,job_id,salary,
CASE
WHEN job_id = 'IT_PROG' THEN 1.10*salary
WHEN job_id = 'ST_CLERK' THEN 1.15*salary
WHEN job_id = 'SA_REP' THEN 1.20*salary
ELSE salary END "revised_salary"
from employees;
本文由 路远 首发于【路远网(http://www.luyuan.io)】未经允许不得以任何方式转载,违者必将追究法律责任。
- 我的微信
- 这是我的微信扫一扫
- 我的电报
- 这是我的电报扫一扫