千家信息网

oracle 菜鸟学习之 decode中if-then-else逻辑

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,oracle 菜鸟学习之 decode中if-then-else逻辑decode类似于if - then - else语法:decode(values,if1,then1,if2,then2,...e
千家信息网最后更新 2024年09月22日oracle 菜鸟学习之 decode中if-then-else逻辑

oracle 菜鸟学习之 decode中if-then-else逻辑

decode类似于if - then - else

语法:
decode(values,if1,then1,if2,then2,...else)

values 代表某个表的任何类型的任意列或者一个通过计算所得的任何结果,当每个value值被测试,如果value的值为if1,decode函数的结果为then1,如果都不符合,那么就返回else
这里的ifthenelse都可以是函数或计算表达式。

例子

create table student(id number,name varchar2(4),sex number);insert into student values(1,'A',1);insert into student values(2,'B',2);insert into student values(3,'C',1);SQL> select * from student;    ID NAME            SEX---------- ------------ ----------     1 A             1     2 B             2     3 C             1SQL> 

问题:sex列,1显示为nan2显示为nv

SQL> select id,name,decode(sex,1,'nan','nv') from student;    ID NAME     DECODE(SE---------- ------------ ---------     1 A        nan     2 B        nv     3 C        nanSQL> sex -- values1 -- if1nan -- then1nv -- else

实验

创建表:

create table sales(month number(3),sales_tv number(4),sales_computer number(4));insert into sales values(01,10,18);insert into sales values(02,28,20);insert into sales values(03,36,33);

month:月份 sales_tv:电视机的销售量 sales_computer:计算机的销售量

问题:
选出每个月月份最多销售量,使用函数sign.
sign函数可以判断参数是正或负,正返回1,负返回-1,0返回0

SQL> select month,decode(sign(SALES_TV - SALES_COMPUTER),1,SALES_TV,0,SALES_TV,-1,SALES_COMPUTER) as max from sales;     MONTH    MAX---------- ----------     1     18     2     28     3     36SQL> 

原创:www.arppinging.com

0