数据库空值(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')


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM