目前我们用9i,Null和空字符串('')好像没有区别。如果把某个字段设置为'',系统会自动把它变为Null,请问是否可以把它们设置为不同?
---------------------------------------------------------------
oracle中,''被认为等于null
---------------------------------------------------------------
含义解释:
问:什么是NULL?
答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。
ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:
1、主键字段(primary key),
2、定义时已经加了NOT NULL限制条件的字段
说明:
1、等价于没有任何值、是未知数。
2、NULL与0、空字符串、空格都不同。
3、对空值做加、减、乘、除等运算操作,结果仍为空。
4、NULL的处理使用NVL函数。
5、比较时使用关键字用“is null”和“is not null”。
6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。
7、排序时比其他数据都大(索引默认是降序排列,小→大),所以NULL值总是排在最后。
---------------------------------------------------------------
SQL> select * from bb;
A B
- ----------
SQL> insert into bb (a) values('1');
1 row inserted
SQL> select * from bb where b is null;
A B
- ----------
1
SQL> select * from bb where b is '';
select * from bb where b is ''
ORA-00908: missing NULL keyword
SQL> select * from bb where b='';
A B
- ----------
对于以上查询,只能使用null形式了.