Oracle Decode()函数使用技巧分享

前端之家收集整理的这篇文章主要介绍了Oracle Decode()函数使用技巧分享前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天上头要求做一个类似的功能,初步想到的列转行,但是如何实现也没有什么好办法,这个函数不错DECODE函数是ORACLE PL/sql功能强大的函数之一,目前还只有ORACLE公司的sql提供了此函数,其他数据库厂商的sql实现还没有此功能。DECODE有什么用途 呢? 先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过sql语句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary1.15,-1,salary1.2,salary from employee 是不是很简洁?
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能

DECODE(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

(字段,比较1,值1,比较2,值2,.....,比较n,值n缺省值)函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

函数使用技巧

方法:

函数根据某个值是0、正数还是负数,分别返回0、1、-1

301  1300

sql语句为:

85,显示优秀;>70显示良好;>60及格;否则是不及格。
score,那么:
select id,decode(sign(score-85),'优秀',
decode(sign(score-70),'良好',
decode(sign(score-60),'及格','不及格')))
from student;
函数的语法结构如下:
decode (expression,search_1,result_1)
decode (expression,result_1,search_2,result_2)
decode (expression,result_2,....,search_n,result_n)

decode (expression,result_n,default)

函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
以下是一个简单测试,用于说明Decode函数用法:
sql> create table t as select username,default_tablespace,lock_date from dba_users;

select * from t;

------------------------------ ------------------------------ ---------
SYS SYSTEM
SYSTEM SYSTEM
OUTLN SYSTEM
CSMIG SYSTEM
SCOTT SYSTEM
EYGLE USERS
DBSNMP SYSTEM
WMSYS SYSTEM 20-OCT-04

sql> select username,decode(lock_date,null,'unlocked','locked') status from t;

------------------------------ --------
SYS unlocked
SYSTEM unlocked
OUTLN unlocked
CSMIG unlocked
SCOTT unlocked
EYGLE unlocked
DBSNMP unlocked
WMSYS locked

select username,'unlocked') status from t;

------------------------------ --------
SYS unlocked
SYSTEM unlocked
OUTLN unlocked
CSMIG unlocked
SCOTT unlocked
EYGLE unlocked
DBSNMP unlocked
WMSYS

原文链接:https://www.f2er.com/oracle/65566.html

猜你在找的Oracle相关文章