首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

【上】怎么做NULL的判断

2012-09-29 
【求助下】如何做NULL的判断?变量X,Y存储的 都可能是NULL,也可能 是任何字符。存储过程中有如下代码:DECLAREx

【求助下】如何做NULL的判断?
变量X,Y存储的 都可能是NULL,也可能 是任何字符。

存储过程中有如下代码:

DECLARE
  x VARCHAR2(1); 
  y VARCHAR2(1); 
BEGIN
  IF NVL(x,'')=NVL(y,'') THEN
  dbms_output.put_line('YES');
  ELSE
  dbms_output.put_line('NO');
  END IF;
END;

判断失效了。。。输出的No,而不是YES。

需要强调的是,由于X和Y可能是任何字符,也可能都是NULL。
所以只能写NVL(x,''),而不能写成NVL(x,'某个字符')来替代。


[解决办法]

SQL code
DECLARE  x VARCHAR2(1);    y VARCHAR2(1);  BEGIN  IF (x is null and y is null) or x=y THEN    dbms_output.put_line('YES');  ELSE    dbms_output.put_line('NO');  END IF;END;
[解决办法]
SQL code
--不等的情况,还真没太在意过,呵呵DECLARE  x VARCHAR2(1);    y VARCHAR2(1);  BEGIN  IF (x is null and y is not null) or (x is not null and y is null) or x<>y THEN    dbms_output.put_line('not equal');  ELSE    dbms_output.put_line('equal');  END IF;END;/
[解决办法]
不等于的情况,用这个
SQL code
DECLARE  x VARCHAR2(1);   y VARCHAR2(1); BEGIN  IF (x||'1' <> y||'1')THEN  --NULL做隐式转化  dbms_output.put_line('NO');  ELSE  dbms_output.put_line('YES');  END IF;END; 

热点排行