decode函数

文章来源:decode函数的使用

decode的几种用法

1.使用decode判断字符串是否一样

decode(value,if 1,then 1,if 2,then 2,if 3,then 3,……,else)
含义为:

if 条件 =1 then
	return(value 1)
if 条件 =2 then
	return(value 2)
if 条件 =3 then
	return(value 3)
……
else
	return(default)
end if

栗子:

>select empno,decode(empno,7396,'smith',7499,'allen',7521,'ward',7566,'jones','unknow') as name from emp where rownum <= 6;
>7369 smith
 7499 allen
 7521 ward
 7566 jones
 7654 unknow
 7698 unknow

2.使用decode比较大小

如下,和min起的作用是一样的。

select decode (sign(var1-var2),-1,var1,var2) from dual

其中 sign是符号函数,若函数内为负数返回-1,若为正数返回1,若为0返回0.若把-1改为1,则作用和max相同。
栗子:

# 取小的数
>select decode(sign(100-90),-1,100,90) from daul;
>90

#取大的数
>select decode(sign(100-90),1,100,90);
>100

3.使用decode函数分段

工资大于等于10000为高薪,小于10000且大于等于5000为中等,工资小于5000且大于等于1000为低薪,小于1000为极低薪。
栗子

>select ename,sal,
	   decode(sign(sal-10000),
	   		  1,'high sal',
	   		  0,'high sal',
	   		  -1,decode(sign(sal-5000),
	   		  		    1,'mid sal',
	   		  		    0,'mid sal',
	   		  		    -1,decode(sign(sal-1000),
	   		  		    		  1,'low sal',
	   		  		    		  0,'low sal',
	   		  		    		  -1,'best low sal')))
 from emp;
>smith 800   best low sal
 allen 1600  low sal
 ward  5200  mid sal
 jones 15300 high sal	  	
 james 5000  mid sal	    

4.利用decode实现表或者视图的行列转换

栗子

>select 
	sum(decode(ename,'smith',sal,0) smith,
	sum(decode(ename,'allen',sal,0) allen,
	sum(decode(ename,'ward',sal,0) ward,
 from emp;
 > smith allen ward
    800  1600  5200

5.使用decode函数根据表达式来搜索字符串

使用方法decode(expression,search_1,result_1,search_2,result_2,……,search_n,result_n,default)
其中decode函数用来比较表达式,和搜索字符串,如果匹配,则返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

栗子

>select ename,
		decode(instr(ename,'s'),0,'不含有s','含有s') as info
 from emp;
>smith 含有s
 allen 不含有s
 ward  不含有s

#over,明天写窗口函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值