zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

oracle函数 end

Oracle 函数 end
2023-09-11 14:18:18 时间

【功能】当:<表达式>=<表达式条件值1……n> 时,返回对应 <满足条件时返回值1……n>

当<表达式条件值1……n>不为条件表达式时,与函数decode()相同,

decode(<表达式>,<表达式条件值1>,<满足条件时返回值1>,<表达式条件值2>,<满足条件时返回值2> ……,<不满足上述条件时返回值>)

 

【参数】

<表达式> 默认为true (逻辑型)

<表达式条件值1……n> 类型要与<表达式>类型一致,

若<表达式>为字符型,则<表达式条件值1……n>也要为字符型

 

【注意点】

1、以CASE开头,以END结尾

2、分支中WHEN 后跟条件,THEN为显示结果

3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加

4、END 后跟别名

5、只返回第一个符合条件的值,剩下的when部分将会被自动忽略,得注意条件先后顺序

 

【示例】

建立环境:

create table xqb

(xqn number(1,0));

insert into xqb xqn values(1);

insert into xqb xqn values(2);

insert into xqb xqn values(3);

insert into xqb xqn values(4);

insert into xqb xqn values(5);

insert into xqb xqn values(6);

insert into xqb xqn values(7);

commit;

 

查询结果:

SELECT xqn,

       CASE

          WHEN xqn = 1  THEN '星期一'

          WHEN xqn = 2  THEN '星期二'

          WHEN xqn = 3  THEN '星期三'

         else '星期三以后'

       END 星期

FROM xqb

 

另类写法

SELECT xqn,

       CASE xqn

          WHEN 1  THEN '星期一'

          WHEN 2  THEN '星期二'

          WHEN 3  THEN '星期三'

         else '星期三以后'

       END 星期

FROM xqb

 

decode正确表达:

SELECT xqn,

decode(xqn,1,'星期一',2,'星期二',3,'星期三','星期三以后') 星期

FROM xqb

 

decode错误表达:

SELECT xqn,

decode(TRUE,xqn=1,'星期一',xqn=2,'星期二',xqn=3,'星期三','星期三以后') 星期

FROM xqb

 

组合条件表达:

SELECT xqn,

       CASE

          WHEN xqn <= 1  THEN '星期一'

          WHEN xqn <= 2  THEN '星期二'   --条件同:not(xqn<=1) and xqn<=2

          WHEN xqn <= 3  THEN '星期三'   --条件同:not(xqn<=1 and xqn<=2) and xqn<=3

         else '星期三以后'

       END 星期

FROM xqb