壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 390|回复: 3

[二次开发] null 和空

[复制链接]
发表于 2013/8/6 19:00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
HI,各位啊。
做如下的语句,感觉应该输出 is ok ,但是实际是 is not ok.不理解。忘解答。
还有我试了一下如果v_char VARCHAR2(20) 这样不赋值也是is not ok。我理解null没法和字符比较。但是赋予空值和null一样吗?为此我写了第二个程序。实际也是歇菜。null和空不一样。不仅如此,我还写了第三个也是歇菜。
DECLARE
v_char VARCHAR2(20):='';
BEGIN
  IF v_char <> '1' THEN
    dbms_output.put_line('is ok');
  ELSE
    dbms_output.put_line('is not ok');
  END IF;
END;
---------------------------------------第二个
DECLARE
v_char VARCHAR2(20):='';
v_char2 VARCHAR2(20);
BEGIN
  IF v_char = v_char THEN
    dbms_output.put_line('is ok');
  END IF;
END;
------------------------------------------第三个
DECLARE
v_char VARCHAR2(20):='';
BEGIN
  IF v_char = v_char THEN
    dbms_output.put_line('is ok');
  END IF;
END;
发表于 2013/8/7 09:34:30 | 显示全部楼层
在oracle中,判断一个字段或者一个变量是否为null 语法是 is null。返回的结果是boolean型。
null并不表示不存在,而是未知,等价于没有任何值、是未知数。
所以如果使用 = null,会返回null,是没有任何意义的。

所以针对你的几个测试
---------------------------------------第一个
DECLARE
v_char VARCHAR2(20):='';
BEGIN
  IF v_char <> '1' THEN --> null值的判断等于不等于都是没有意义的
    dbms_output.put_line('is ok');
  ELSE
    dbms_output.put_line('is not ok');
  END IF;
END;
---------------------------------------第二个
DECLARE
v_char VARCHAR2(20):='';
v_char2 VARCHAR2(20);
BEGIN
  IF v_char = v_char THEN --> 你应该是想用v_char = v_char2这样判断吧,同上,空和空是等于的是没有意义的
    dbms_output.put_line('is ok');
  END IF;
END;
------------------------------------------第三个
DECLARE
v_char VARCHAR2(20):='';
BEGIN
  IF v_char = v_char THEN -->同上
    dbms_output.put_line('is ok');
  END IF;
END;


*另外,顺便提一句,因为你定义的变量是VARCHAR2类型的,所以赋值为‘’和不赋值是等价的。
除非定义成char类型,那么第三个测试会通过。

评分

参与人数 1努力值 +100 收起 理由
纵横四海 + 100 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013/8/7 09:56:29 | 显示全部楼层
小xiaol 发表于 2013/8/7 09:34
在oracle中,判断一个字段或者一个变量是否为null 语法是 is null。返回的结果是boolean型。
null并不表示 ...

哦。好的。我再研究研究。
 楼主| 发表于 2013/8/7 09:57:23 | 显示全部楼层
小xiaol 发表于 2013/8/7 09:34
在oracle中,判断一个字段或者一个变量是否为null 语法是 is null。返回的结果是boolean型。
null并不表示 ...

还有对版主明显不满!,就这问题咋也得加50个努力值。给你加100呢。{:soso_e100:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 07:32 , Processed in 0.021150 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表