oracle中的NVL,NVL2,NULLIF,COALESCE几个通用函数
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数。主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以。
下面简单介绍一下几个函数的用法。
在介绍这个之前你必须明白什么是oracle中的空值null
1.NVL函数
NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
例如:
SQL> select ename,NVL(comm, -1) from emp;
ENAME NVL(COMM,-1)
——————– ————
SMITH -1
ALLEN 300
WARD 500
JONES -1
MARTIN 1400
BLAKE -1
FORD -1
MILLER -1
其中显示-1的本来的值全部都是空值的
2 NVL2函数
NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。
SQL> select ename,NVL2(comm,-1,1) from emp;
ENAME NVL2(COMM,-1,1)
——————– —————
SMITH 1
ALLEN -1
WARD -1
JONES 1
MARTIN -1
BLAKE 1
CLARK 1
SCOTT 1
上面的例子中。凡是结果是1的原来都不为空,而结果是-1的原来的值就是空。
3. NULLIF函数
NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
下面是一个例子。使用的是oracle中HR schema,如果HR处于锁定,请启用
这里的作用是显示出那些换过工作的人员原工作,现工作。
SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) “Old Job ID”
from employees e, job_history j
WHERE e.employee_id = j.employee_id
ORDER BY last_name;
LAST_NAME JOB_ID JOB_ID Old Job ID
————————————————– ——————– ——————– ——————–
De Haan AD_VP IT_PROG AD_VP
Hartstein MK_MAN MK_REP MK_MAN
Kaufling ST_MAN ST_CLERK ST_MAN
相关文档:
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from ......
* SQL Group Function
*
s (num can be a column or ex
pression)
(null values are ign
*
ored, default between distin
ct and all is all)
********************
***************
****************************
****************
AVG([distinct or all ......
1.位图索引
最近我参与了一个项目。开发人员正饱受性能问题之苦,看上去他们的系统中许多事务在串行
进行。他们的做法不是大家并发地工作,而是每个人都要排一个长长的队,苦苦等着前面的人完成后才能
继续。应用架构师向我展示了系统的体系结构,这是经典的三层方法。他们想让Web 浏览器与一个运行JSP
(JavaServer Pa ......
ASM
ASM可以条带化和镜像磁盘,因此可以在数据库备加载的情况下添加、删除磁盘、以及自动平衡IO。
ASM不是一个文件系统,所以无法从操作系统访问ASM存储的文件,对于使用ASM的数据库只能用RMAN进行备份和恢复。
ASM作为单独的ORACLE实例实施,只有ASM运行时数据库才能访问。
一、磁盘组
ASM提供了三中磁盘组类 ......
虽然网上有很多,但还是在这里记下方便查找:
SELECT i.ksppinm NAME, i.ksppity TYPE, v.ksppstvl VALUE, v.ksppstdf isdefault
from x$ksppi i, x$ksppcv v
WHERE i.indx = v.indx
AND i.ksppinm LIKE '\_%&par%' ESCAPE '\';
......