Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1693437
  • 博文数量: 136
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3261
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-22 11:26
文章分类

全部博文(136)

文章存档

2010年(1)

2009年(26)

2008年(109)

我的朋友

分类: Oracle

2008-04-11 14:25:40

在程序中的变量,NULL的数值计算(加减乘除)结果都为NULL:

 

SQL> set serveroutput on

SQL> DECLARE

  2    n1 NUMBER;

  3    n2 NUMBER;

  4    n3 NUMBER;

  5  BEGIN

  6    n1 := 10;

  7    n3 := n1+n2;

  8    dbms_output.put_line(nvl(n3, 999));

  9  END;

 10  /

999

 

PL/SQL 过程已成功完成。

  

在表中存储的数据中,也是一样:

 

SQL> create table testx(a number(10), b number(10));

 

表已创建。

 

SQL> insert into testx values(10, null);

 

已创建 1 行。

 

SQL> insert into testx values(null, null);

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select nvl(a, 999), nvl(b, 999) from testx;

 

NVL(A,999) NVL(B,999)

---------- ----------

        10        999

       999        999

 

SQL> select nvl(a+b, 999) from testx;

 

NVL(A+B,999)

------------

         999

         999

 
但是有一点,使用SUM函数时,是可以忽略NULL的:

 

SQL> select nvl(sum(a), 999), nvl(sum(b), 999) from testx;

 

NVL(SUM(A),999) NVL(SUM(B),999)

--------------- ---------------

             10             999

 

SQL>

 

阅读(1314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~