Oracle笔记(一)

最近用Oracle比较多了,自己买了书想多学一点,想着不能再半途而废,记个博客监督一下自己。

Oracle空值处理

1.查找空值
如果要查询某一列的空值怎么办,空值是为空,而不是等于0的这种
Oracle笔记(一)
如果使用 select * from emp where comm= Null 没有查询结果。实际上,Null是不能用 “=” 运算符的,要用 IS NULL 进行判断,正确的写法如下:
Oracle笔记(一)

Oracle笔记(一)
2. 处理空值
因为 NULL 不支持加、减、乘、除、大小比较、相等比较,所以需要把空值变为有意义的值.
先看两个函数,nvl() 函数,NVL(expr1,expr2) ,含义是如果第一个参数的值为空,则显示第二个参数的值;如果第一个的参数不为空,则显示第一个参数本来的值。
coalesce() 函数实际上是 nvl() 函数的循环使用,coalesce(expr1,expr2,expr3…exprn) 返回第一个不为空的列的数据,参数是列。

注:因为NVL只能处理单个参数,如果要处理多个参数,才需要使用coalesce函数。
nvl(expr1,expr2) 函数用法

select * from ename,sal,nvl(comm,0) where  deptno=20 and nvl(comm,0)

coalesce(expr1,expr2,expr3…exprn) 函数的用法:
create or repleace view v1_5 select null as c1,null as c2,1 as c3,null as c4,2 as c5,null,as c6 from dual union all select null as c1,null as c2,null as c3,3 as c4,null as c5,2 as c6 from dual
上面的实例中 c1-c6 各列均有空值,要求取出第一个不为空的值:

select coalesce(c1,c2,c3,c4,c5,c6) as c form v1_5