decode的三种用法,以及nvl()函数

select lpad(p.branch_id,7,0) from prop_branch p where p.branch_id='11354'
--结果是0011354,7代表添加的长度,0是要补充的值

select case when p.claim_status='1' then ' 已认领的 '
when p.claim_status='2' then ' 已放弃起 '
  else '其他'
  end
 from prop_branch p 
 -- decode第一种用法释义,如果p.claim_status值为0,则显示待认领,如果是1,则显示已认领,用法如case when then else end
 select decode(p.claim_status,0,'待认领 ',1,'已认领 ',2,'已放弃 ','其他') from prop_branch p
 -- decode第二种用法释义 比较大小 ,当字段或字段的运算的值等于值-1时,该函数返回值2,否则返回值3
 --sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
 select decode(sign(100-90),-1,100,90) from dual;
 --用法同第二种用法类似
select decode(p.business_service_name,'耿淑萍','包含','不包含 '),p.business_service_name from prop_branch p;
-- decode第三种用法释义,行专列,使用decode统计待认领和已认领的数据
select sum(decode(p.claim_status,'0',1,0)) as wait, sum(decode(p.claim_status,'1',1,0)) as overs from  prop_branch p 
--结果是:    1    38

 

一、nvl()函数介绍
1.NVL函数是一个空值转换函数。
该函数的目的是把一个空值(null)转换成一个实际的值。
2.两种用法
用法一
(1)格式:NVL(表达式1,表达式2)
(2)功能:如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。
(3) 注意:其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
对数字型: NVL(comm,0);

对字符型 NVL( TO_CHAR(comm), 'No Commission')

对日期型 NVL(hiredate,' 31-DEC-99')
其中comm为你需要判断是否为空的列名
123456
用法二
(1)格式:NVL2(表达式1,表达式2,表达式3)
(2)功能:如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。
(3)样例:
 NVL2(comm,'sal+comm',sal)
如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。 
12
3.一种功能
自己总结了一下NVL()函数的功能,方便记忆:第一个表达式的值如果为null,就返回最后一个表达式的值。
 

你可能感兴趣的:(数据处理基础)