本文共 1379 字,大约阅读时间需要 4 分钟。
decode类似于if - then - else
语法:
decode(values,if1,then1,if2,then2,...else)
values
代表某个表的任何类型的任意列
或者一个通过计算所得的任何结果
,当每个value
值被测试,如果value
的值为if1
,decode函数的结果为then1
,如果都不符合,那么就返回else
。
if
、then
及else
都可以是函数或计算表达式。 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
显示为nan
,2
显示为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返回0SQL> 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
转载于:https://blog.51cto.com/xiaowangzai/2322847