飞 的个人资料二月飞雪日志列表留言簿 工具 帮助

日志


6月7日

Oracle里Null值栏位的查询

我们都知道Oracle里的Null值在输入输出时等效于''(空字符串),但是今天发现在Null值查询时却不能简单地把它等同于'',下面是实验过程:
1,建立一个表test
CREATE TABLE test
    (a                              VARCHAR2(1))
/
2,插入三笔记录
INSERT INTO test values (1);
INSERT INTO test values ('');
INSERT INTO test values (2);
3,执行查询SELECT * FROM test WHERE a not in (1);返回如下:
Row # A
      1  2
注意没有将A为Null的那条记录查出来
4,执行查询SELECT * FROM test WHERE a in ('', 1);或者SELECT * FROM test WHERE a in (NULL, 1);返回均如下:
Row # A
      1  1
另外Null值栏位也不遵循条件比对,比如TableA.Column1 <> TableB.Column1,所有栏位值为Null的都不能被查出.
关于解决方法,首先当然是把Null值情形也作为条件写进去,比如:SELECT * FROM test WHERE a not in (1) or a is null;
另外对于一些比较复杂的查询场合,可以先建立一个View,用NVL函数将所有Null值转换为一个无意义的数据,这样方便后面的查询和统计.

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://wonphy.spaces.live.com/blog/cns!22042D05BB497C1A!310.trak
引用此项的网络日志