日期:2014-05-16  浏览次数:20501 次

Oracle---常用函数汇总(1)

众所周知,数据库的函数较多,而且不同的数据库厂商在sql标准之外,还扩展了不少自己专有的函数,在此,我会把在工作中用到的容易忘记的oracle函数简单记录下,不论其是标准的,还是非标准的。


1. decode函数

DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。 在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。

它的语法:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else)

先看一下网上摘过来的例子。

假设我们想给智星职员加工资,其标准是:工资在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,salary*1.15,-1,salary*1.2,salary) from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能


2.lpad函数

简单讲,就是对给定的字符串限定长度,如果该字符串长度不够,就用最右边,即第三个参数所表示的字符串来填充此字符串的左边。

语法格式如下: lpad( string, padded_length, [ pad_string ] )

举例如下:

SQL> select lpad('abcde',10,'x') from dual;

  ??? LPAD('ABCDE',10,'X')   

????????? --------------------  

 ?????? xxxxxabcde

同理,与之对应的rpad函数就是在字符串长度不够时填充其右边位置,以保证达到指定的长度。

SQL> select rpad('abcde',10,'x') from dual;

  ?? RPAD('ABCDE',10,'X')   

???????? --------------------  

 ????? abcdexxxxx