首页 > 开发 > 综合 > 正文

NULL 小议

2024-07-21 02:35:59
字体:
来源:转载
供稿:网友

  我们都知道,在Oracle中,NULL表示无值或空值。在这里,我把自己对NULL的一点体会写出来,与大家交流。
  
  1。有两种NULL。第一种NULL,是做为值来赋给其它变量的。如:A :=NULL。此时,NULL与 ''(两个连续的单引号)等价。第二种NULL,是做为关系操作符用的。如: IS NULL 和 IS NOT NULL。在这两个关系操作符中,NULL是不能用 '' 代替的。
  
  2。第一种NULL可以与等号连用。如 UPDATE 表名 SET 字段1=NULL WHERE ……;
  另外,在赋值时一定要注重,不要在NULL两边加上单引号,若这样写:
  V_A :='NULL';
  则 V_A 就是一个4个字符的字符串了。
  
  3。对于一个变量的值做判定时,假如变量为空值,则除了 IS NULL 和 IS NOT NULL 两种判定外,其它判定(如 =,>,<等)的结果都是假。但有一种情况,可以包含进来。比如,当变量V_A的值为'A'时,做 语句1,否则做 语句2。这样就可以写为:
  
  IF V_A = 'A' THEN 语句1;
  ELSE 语句2;
  END IF;
  
  这时,V_A 为空时,也会执行 语句2。但反过来写就是错的,如:
  
  IF V_A != 'A' THEN 语句2;
  ELSE 语句1;
  END IF;
  
  这时,V_A 为空时,还会执行 语句1。
  
  4。在计算一个number字段 A 的SUM时,若有的记录此字段为空,则用 SUM(A) 来求和时,会忽略这样的记录。
  在计算一个number字段 A 的COUNT时,若有的记录此字段为空,则用 COUNT(A) 来计数时,不会忽略这样的记录,也会把这样的记录统计进来。
  
  5。在用 LIKE '%' 来匹配时,空值不会被匹配。因为%表示“任意多个字符”,但不包括“没有任何字符”。
  
  6。对空值的转换,用 nvl函数来完成。NVL(A,'0') 当A为空时返回'0',否则为变量A的值。
  
  7。以上总结难免挂一漏万能,恳请网友多多指正与补充!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表