关于decode的用法,最好举个详细的例子。
解决方案 »
- oracle10g手动启动服务问题
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- 高手过来看
- 不显示删除回复显示所有回复显示星级回复显示得分回复 ORA-04091: 表 HNTELANT.XB_UIMCARD 发生了变化, 触发器/函数不能读它
- 为什么更改不了连接用户名(SYS更改不了到SYSTEM)?
- ORACLE基础概念问题一堆,请求帮助回答。
- 求一句sql
- Oracle 8.1.6: ORA-12571: TNS:packet writer failure
- 如何卸载ORACLE8
- java.sql.SQLException: ORA-00600: internal error code, arguments: [kkpamRFGet0]
- 这个语句有什么问题?
- 类似QQ查找好友那种, 根据名字简拼快速查找好友?
如不等于,1,2,3,4 就取"杂志"
一下内容来自百度http://baike.baidu.com/view/1130040.htm
DECODE函数是ORACLE PL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢? 先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的加20%;工资在8000元或以上的加15%,通常的做法是,先选出记录中的工资字段值 --->select salary into var-salary from employee,然后对变量var-salary用if-then-else或 case when then else end之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下: select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary*1.15) from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
[SYS@myoracle] SQL>WITH t1 AS(
2 SELECT 1 a FROM dual UNION ALL
3 SELECT 2 a FROM dual UNION ALL
4 SELECT 3 a FROM dual UNION ALL
5 SELECT 4 a FROM dual)
6 SELECT a,DECODE(a,1,'此值为1',2,'此值为2',3,'此值为3','此值不为1,2,3') ans
7 FROM t1; A ANS
---------- -------------
1 此值为1
2 此值为2
3 此值为3
4 此值不为1,2,3[SYS@myoracle] SQL>