varchar2类型的字段当值分别为Null和空字符串时有何区别?

[复制链接]
查看11 | 回复7 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
如题:
  (1)varchar2类型的字段当值分别为Null和空字符串时有何区别?
  (2)在对该字段执行SQL查询时,是否有性能上的区别?
  (3)在数据存储空间上,占用的字节数是否相同?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
(1)Null不能参与比较,例如col1=null,但空格是可以比较的,col1=' '
(2)两个是完全不同的功能,性能可比性不同
(3)如果是VARCHAR2型的,NULL不占用字节,而空格是占用的.
有不对地方还望指正
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
kind066:
  你说的Null不能参与比较,我好像记得我有一次用col1 != null也得到想要的结果了?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
看看这个
http://space.itpub.net/4227/viewspace-69110
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
原帖由 kind066 于 2008-1-24 20:38 发表
(1)Null不能参与比较,例如col1=null,但空格是可以比较的,col1=' '
(2)两个是完全不同的功能,性能可比性不同
(3)如果是VARCHAR2型的,NULL不占用字节,而空格是占用的.
有不对地方还望指正



支持
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
我测试了一下,如果按照where a!=null来看会报错:ORA-01797:this operator must be followed by ANY or ALL.我用的是ORACLE 9i,不知道是不是别的版本会支持.
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
null 和 ''是同一个东西
SQL> select * from dual where ''='';
未选定行
SQL> select * from dual where length(null)=0;
未选定行
SQL> select * from dual where length('')=0;
未选定行
SQL>
[ 本帖最后由 catchwo 于 2008-1-25 09:45 编辑 ]
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
对NULL的一点总结:
http://www.itpub.net/redirect.ph ... 976&ptid=932786
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行