数据库空值(Null)小结

1.定义空(Null)值

空值是一个不可用的,没有被分配的, 或者不能得到的值.空值不同于零或者空格.

 

2.在算术表达式中的空值

在算术表达式中,与空值运算的结果为空。
SQL> ed
已写入 file afiedt.buf
  1  SELECT last_name,12* salary, 12*salary*(1+commission_pct)
  2* FROM   employees
SQL> /
如果commission_pct列有空值,则即使salary不可能是空,但是12*salary*(1+commission_pct)也是一个空值
解决方法:使用nvl(可能有空值的列,如果是空值用什么值代替)
SQL> ed
已写入 file afiedt.buf
  1  SELECT last_name,12*salary,12*salary*(1+nvl(commission_pct,0))
  2* FROM   employees
SQL> /

 

3.使用IS NULL运算符

SQL> select last_name,manager_id from employees
  2  where manager_id is null;

 

4.空值也会带来一些算法的改变,会使快速索引访问失效

Employees表的manager_id列建有索引
SQL> set autotrace trace exp
SQL> select last_name,manager_id from employees
  2  where manager_id =201;

在下面的语句中,没有使用索引,设想全国有13亿人,manager_id的领导很少,去找的时候不用索引,可想而知这个查询多么花费时间,解决方法是在空值的地方,放一个区别于正常数据的值
SQL> select last_name,manager_id from employees
  2  where manager_id is null;

 

5.NVL函数
用法:NVL(可能有空值的列,如果是空值用什么值代替). 数据类型可以是日期、字符、或者数字. 数据类型必须匹配:例如
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')

posted @ 2012-07-15 17:35  simplefrog  阅读(8022)  评论(0编辑  收藏  举报