904
魔獸
空與非空 EMPTY_LOB和NULL的區別
前不久寫過一篇文章,描述如果表包含了觸發器,在通過IMP導入數據的時候,原本的EMPTY_LOB將被轉化為NULL。有朋友在文章的回複中問,EMPTY_LOB和NULL的區別,這裏就簡單描述一下。
包含觸發器的LOB表執行IMP導致EMPTY_LOB變為空:
https://yangtingkun.itpub.net/post/468/495024
說實話,二者其實差別還是相當大的。
一個表示的未知,另一個表示的空的大對象。需要注意空的大對象並不是空的概念:
使用IS NULL作為條件進行判斷,EMPTY_LOB是查詢不到的。
利用DBMS_LOB.GETLENGTH也可以看出二者的區別:
雖然EMPTY_LOB沒有包含LOB內容,但是LOB頭信息已經存在,因此需要占用不小的空間。
二者最大的區別在於:
EMPTY_LOB雖然沒有LOB的內容,但是已經做好了插入LOB內容的準備,用戶獲取到LOB的頭信息後就可以直接插入數據了。
而對於NULL來說,顯然是不能直接修改的。
來源:數據和雲
最後更新:2017-08-29 11:02:55