请问Null和空字符串('')的区别

目前我们用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形式了.

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus