众所周知,数据库的函数较多,而且不同的数据库厂商在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