PLSQL中,select case..when.. then..什么意思?怎么用?

最好写个式子出来,一看就能懂的那种,答案满意的加50分

case when ... then .. when .. then ... end

这种表达式,是sql的不同条件分支结果。

举例如下,

1、创建数据表,create table test_student(stu_id number, class_id number);

2、插入测试数据,

insert into test_student values(1,1001);

insert into test_student values(2,1001);

insert into test_student values(3,1002);

insert into test_student values(4,1003);

insert into test_student values(5,1003);

insert into test_student values(6,1003);

3、查询表中数据,select * from test_student ,

4、编写case when 表达式,将class_id翻译为中文名称,sql如下,

select t.*,

       case

         when class_id = 1001 then

          '语文'

         when class_id = 1002 then

          '数学'

         when class_id = 1003 then

          '英语'

       end as class_name

  from test_student t;

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-01
case 是SQL国际标准就有的,他的作用就是实现条件语句(如同一般计算机语言中的if和switch……case)按照不同的使用方法case有两种语法:
1.简单case语法是
就是实现相当于一般计算机语言中switch……case样式的,格式是
case 变量表达式 --对某个‘变量表达式’进行判断
when 值 --当‘变量表达式’是某个‘值’时
then 返回值表达式 --返回‘返回值表达式’值
[when...
then...
.....] --可以进行多次判断
[else 其他情况返回值表达式] --不符合所有when后面的就是其他情况了
end --结束

举例,比如一个表的sex列用M表示男性,F表示女性,现在不要返回MF而是想返回男女就可以:
select (case sex when 'M' then '男' when 'F' then '女' end) from 表
2 case搜索函数
就是实现相当于一般计算机语言中if……elseif……样式的,格式是
case --case后面没有表达式表示使用的是搜索函数
when 条件 --条件就是布尔表达式,也就判断语句
then 返回值表达式 --条件为真时的返回该表达式值
[when ...
then ...
.........] --可以进行多次判断
[else 其他情况返回值表达式]--不符合所有when后面的就是其他情况了
end -- 结束

同样的以性别为例
select (case when sex='M' then '男' when sex = 'F' then '女' end) from 表本回答被提问者和网友采纳
第2个回答  2010-10-31
case when语句和判断有关比如:
USE AdventureWorks;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO

这句话其实意思很简单,就是对每一行中的ProductLine字段进行匹配,如果等于R就替换成Road,如果不是R,M,T,S的话,就替换为Not for sale。

祝你好运,朋友!

I am Radeon Ling

La Vie en Rose
相似回答