空字符串与NULL值的区别

[复制链接]
查看11 | 回复4 | 2018-4-11 23:13:52 | 显示全部楼层 |阅读模式
“Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。”
请问这里“空字符串”与NULL值是一样的?
谢谢!
'一个空格'这个不算是空值?
另外,”select 1 from dual where null=null;当然就没有记录了“为什么没有记录?是说null不能做=判断?

回复

使用道具 举报

千问 | 2018-4-11 23:13:52 | 显示全部楼层
空字符串与NULL值的区别在于:空字符串是"",会创建一个对象,内容是“”,有内存空间。而null,不会创建对象,没有内存空间,所对应的变量只是一个引用空字符串是唯一在字母表Σ上,没有字符的字符串,标记为ε或λ。空字符串的长度为0。空字符串在内存中占一个字节。Null 是一特殊指标值(或是一种物件参照 reference)表示这个指标并不指向任何的物件。
回复

使用道具 举报

千问 | 2018-4-11 23:13:52 | 显示全部楼层
你可以这么理解空字符串:已经分配了存储空间,但是没有存储东西NULL:没有分配存储空间
回复

使用道具 举报

千问 | 2018-4-11 23:13:52 | 显示全部楼层
区别大了。name==null
是判断name有没有内存空间。"".equals(name)是判断name的内存空间中的值是不是空字符串。没有内存空间的话是不能对变量或对象进行操作的。会出异常。
回复

使用道具 举报

千问 | 2018-4-11 23:13:52 | 显示全部楼层
空字符串:已经分配了存储空间,但是没有存储东西NULL:没有分配存储空间
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行