空字符串与NULL值的区别

“Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。”

请问这里“空字符串”与NULL值是一样的?

谢谢!
'一个空格'这个不算是空值?
另外,”select 1 from dual where null=null;当然就没有记录了“为什么没有记录?是说null不能做=判断?

字符串与NULL值的区别在于:

空字符串是"",会创建一个对象,内容是“”,有内存空间。
而null,不会创建对象,没有内存空间,所对应的变量只是一个引用

    空字符串是唯一在字母表Σ上,没有字符的字符串,标记为ε或λ。空字符串的长度为0。空字符串在内存中占一个字节。

    Null 是一特殊指标值(或是一种物件参照 reference)表示这个指标并不指向任何的物件。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-23
你可以这么理解
空字符串:已经分配了存储空间,但是没有存储东西
NULL:没有分配存储空间本回答被网友采纳
第2个回答  2010-12-10
区别大了。
name==null 是判断name有没有内存空间。
"".equals(name) 是判断name的内存空间中的值是不是空字符串。

没有内存空间的话是不能对变量或对象进行操作的。会出异常。
第3个回答  2010-12-10
空字符串:已经分配了存储空间,但是没有存储东西
NULL:没有分配存储空间
第4个回答  2017-07-09
在数据库系统中,空值是(什么也没有)。
解释:
所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有。在数据库里是严格区分的,任何数跟NULL进行运算都是NULL, 判断值是否等于NULL,不能简单用=,而要用IS关键字。
空 (NULL)
值表示数值未知(在实际意义中,如果使用null,就是代表变量值是未知的,比如手机号码设为null,说明不知道手机号码是什么)。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。
在写入数据的时候,空字符串也是一个确定的值,所以就算定义了 NOT NULL 也可以被写入。
相似回答