空与非空 EMPTY_LOB和NULL的区别

编辑手记:

EMPTY_LOB与NULL在字面意思上看起来差不多,但实际上,它们却有天壤之别。

前不久写过一篇文章,描述如果表包含了触发器,在通过IMP导入数据的时候,原本的EMPTY_LOB将被转化为NULL。有朋友在文章的回复中问,EMPTY_LOB和NULL的区别,这里就简单描述一下。

包含触发器的LOB表执行IMP导致EMPTY_LOB变为空:

http://yangtingkun.itpub.net/post/468/495024

说实话,二者其实差别还是相当大的。

一个表示的未知,另一个表示的空的大对象。需要注意空的大对象并不是空的概念:

使用IS NULL作为条件进行判断,EMPTY_LOB是查询不到的。

利用DBMS_LOB.GETLENGTH也可以看出二者的区别:

虽然EMPTY_LOB没有包含LOB内容,但是LOB头信息已经存在,因此需要占用不小的空间。

二者最大的区别在于:

EMPTY_LOB虽然没有LOB的内容,但是已经做好了插入LOB内容的准备,用户获取到LOB的头信息后就可以直接插入数据了。

而对于NULL来说,显然是不能直接修改的。

热文回顾

Standby Redo Logs 在线重定义 表分区

论DBA的自我修养 MySQL MGR与Galera性能测试

MySQL连接错误 Docker技术

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-08-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信终端开发团队的专栏

Android ListView 与 RecyclerView 对比浅析:缓存机制

本文通过对 RecyclerView 与 ListView 在缓存机制上的一些区别分析,让大家快速了解其特性,在使用上也更加得心应手。

1.1K1
来自专栏芋道源码1024

从一次 Snowflake 异常说起

1. 异常概述 2018年1月26日下午,业务方信贷小组的同学反馈服务执行数据库插入操作出现异常,异常信息显示数据库主键出现重复: ? 在仔细分析了用户的重复主...

1.2K5
来自专栏曾大稳的博客

ffmpeg视频播放器相关

和播放音频一样,采用生产者消费者模型。AvPacket入队,然后AvPacket出队伍解码。

511
来自专栏Java编程

Java多线程同步的五种方法

前几天面试,被大师虐残了,好多基础知识必须得重新拿起来啊。闲话不多说,进入正题。

4700
来自专栏小鄧子的技术博客专栏

About ExecutorService(4),AsyncTask番外篇

直接切入正题,我们都知道AT在3.X将默认的线程池由并行改为串行,真的是众所周知的3.0(HONEYCOMB)开始的嘛?答案是否定的。确切的说是从3.2(HON...

694
来自专栏游戏开发那些事

【Unity3d游戏开发】Unity中的Time.timeScale

  马三最近在做一款游戏的时候涉及到了“加速”和“暂停”这两个功能,我第一时间就想到了应该用 Time.timeScale。当暂停的时候,设置timeScale...

513
来自专栏开发 & 算法杂谈

基于Lockset的数据竞争检测方法汇总(二)

前一篇文章提到的是使用Lockset最经典的方法,但是存在很多误报,针对这些误报产生的原因,有很多分析并改进了原始的Lockset方法,今天主要和大家谈的就是有...

1467
来自专栏吴小龙同學

Android下Context、Activity、Application之间有什么区别

17713
来自专栏Phoenix的Android之旅

来聊聊Android的多线程

答:其实除了Activity,其它组件也都在主线程。这就意味着如果在其他组件中做耗时操作的话,同样会另主线程阻塞。

552
来自专栏杨建荣的学习笔记

Oracle表中含有255列以上时需要注意的(r12笔记第77天)

今天看JL(Jonathan Lewis)的一篇文章,真是费了不少的脑细胞,玩Oracle几十年的老司机,看问题的角度和深度果然不一样,当时看他的大作《O...

33610

扫描关注云+社区