看PL/SQL有两句没懂

[复制链接]
查看11 | 回复9 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
本帖最后由 royzs 于 2013-12-30 14:32 编辑
select ename,sal,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3,sal) from emp;
select ename,sal,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3) from emp;
我执行了一遍,发现结果完全一样啊,奇怪了,decode的格式应该是(条件,值1,返回值1,值2,返回值2,缺省值)
一直不理解这个缺省值的意思是什么,明显没有任何返回啊
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
有不符合条件的情况出现时,就返回该缺省值。
以楼主提供的例子来说,若出现deptno在10、20、30之外的值时,就会返回sal字段的值。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
bfc99 发表于 2013-12-30 15:20
有不符合条件的情况出现时,就返回该缺省值。
以楼主提供的例子来说,若出现deptno在10、20、30之外的值时 ...


多谢
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
类似:if else
if else
else
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
晕,10号部门工资1.1,20号部门1.2,30号部门1.3,其他部门不变
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
缺省是在不在你条件之外的值!!
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
select ename,sal,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3,0) from emp;
这样你就看出不一样了
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层



回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
decode这个函数暗藏玄机


回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
2楼说的很明白,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行