plsql中的case语句使用详解

  • A+
所属分类:技术

chatGPT账号

--- 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)】未经允许不得以任何方式转载,违者必将追究法律责任。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
路远

发表评论

您必须登录才能发表评论!