【转】SQL decode 函数的用法

decode(字段|表达式,条件1,结果1,条件2,结果2,...,条件n,结果n,缺省值);
--缺省值可以省略

 表示如果 字段|表达式 等于 条件1 时,DECODE函数的结果返回 条件1 ,...,如果不等于任何一个条件值,则返回缺省值。
【注意】:decode 函数 ,只能在select 语句用。

decode 函数 用法

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

sql 测试:

复制代码

1 select empno,
2        decode(empno,
3        7369,'smith',
4        7499,'allen',
5        7521,'ward',
6        7566,'jones',
7        'unknow') as name 
8 from emp 
9 where rownum<=10;

复制代码

2.使用decode 函数比较大小

输出两个数中的较小值:

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

示例:

select decode(sign(100-90),-1,100,90) from dual;

3.使用decode 函数分段

设 工资大于等于5000为高薪,大于等于3000且小于5000为中薪,低于3000为低薪 则每个人的工资水平是...?

复制代码

 1 select e.ename ,e.sal,
 2        decode(sign(e.sal-5000),
 3        1, 'high sal',
 4        0, 'hign sal',
 5        -1,
 6           decode(sign(e.sal-3000),
 7           1, 'mid sal',
 8           0, 'mid sal',
 9           -1,'low sal'
10              )
11           )
12         as "工资等级" 
13 from scott.emp e;

复制代码

(4,5还没掌握)

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

复制代码

1 select 
2    sum(decode(e.ename,upper('smith'),sal,0)) smith,
3    sum(decode(e.ename,upper('allen'),sal,0)) allen,
4    sum(decode(e.ename,upper('ward'),sal,0)) ward,
5    sum(decode(e.ename,upper('jones'),sal,0)) jones,
6    sum(decode(e.ename,upper('martin'),sal,0)) martin
7 from scott.emp e ;

复制代码

sum 函数的用法 ?

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

decode函数 比较表达式和搜索字。如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

复制代码

1 select 
2    sum(decode(e.ename,upper('smith'),sal,0)) smith,
3    sum(decode(e.ename,upper('allen'),sal,0)) allen,
4    sum(decode(e.ename,upper('ward'),sal,0)) ward,
5    sum(decode(e.ename,upper('jones'),sal,0)) jones,
6    sum(decode(e.ename,upper('martin'),sal,0)) martin
7 from scott.emp e ;

复制代码

 转载自https://blog.csdn.net/weeknd/article/details/71157044

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值