閱讀904 返回首頁    go 魔獸


空與非空 EMPTY_LOB和NULL的區別

前不久寫過一篇文章,描述如果表包含了觸發器,在通過IMP導入數據的時候,原本的EMPTY_LOB將被轉化為NULL。有朋友在文章的回複中問,EMPTY_LOB和NULL的區別,這裏就簡單描述一下。

包含觸發器的LOB表執行IMP導致EMPTY_LOB變為空:
https://yangtingkun.itpub.net/post/468/495024

說實話,二者其實差別還是相當大的。
一個表示的未知,另一個表示的空的大對象。需要注意空的大對象並不是空的概念:

image


使用IS NULL作為條件進行判斷,EMPTY_LOB是查詢不到的。
利用DBMS_LOB.GETLENGTH也可以看出二者的區別:


image

image


雖然EMPTY_LOB沒有包含LOB內容,但是LOB頭信息已經存在,因此需要占用不小的空間。

二者最大的區別在於:
EMPTY_LOB雖然沒有LOB的內容,但是已經做好了插入LOB內容的準備,用戶獲取到LOB的頭信息後就可以直接插入數據了。
而對於NULL來說,顯然是不能直接修改的。


image

image


來源:數據和雲

最後更新:2017-08-29 11:02:55

  上一篇:go  【數據蔣堂】第20期:從SQL語法看離散性
  下一篇:go  東南大學高桓:知識圖譜表示學習 | 直播預告·PhD Talk #15