【恩墨學院】空與非空 EMPTY_LOB和NULL的區別

恩墨學院發表於2017-12-27

編輯手記:

EMPTY_LOB與NULL在字面意思上看起來差不多,但實際上,它們卻有天壤之別。


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


包含觸發器的LOB表執行IMP導致EMPTY_LOB變為空:

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


說實話,二者其實差別還是相當大的。

一個表示的未知,另一個表示的空的大物件。需要注意空的大物件並不是空的概念:


   Oracle 實戰


使用IS NULL作為條件進行判斷,EMPTY_LOB是查詢不到的。

利用DBMS_LOB.GETLENGTH也可以看出二者的區別:


Oracle 實戰


Oracle 實戰


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


二者最大的區別在於:

EMPTY_LOB雖然沒有LOB的內容,但是已經做好了插入LOB內容的準備,使用者獲取到LOB的頭資訊後就可以直接插入資料了。

而對於NULL來說,顯然是不能直接修改的。


Oracle 實戰

Oracle 實戰

恩墨學院隸屬於雲和恩墨(北京)資訊科技有限公司,致力於提供專業高水準的與大資料培訓服務,挖掘培養大資料與資料庫人才。恩墨學院提供包括個人實戰技能培訓、個人認證培訓、企業內訓在內的全方位大資料和資料庫技術培訓。ACE級別超強師資,配備專業實驗室,沉浸式學習與訓練,專業實驗室、配備專業助教指導訓練。能迅速融入專家圈子,業內資源豐富,迅速積累職場人脈。課程包括:班、Oracle 、Oracle OCP考試等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28530558/viewspace-2149407/,如需轉載,請註明出處,否則將追究法律責任。

相關文章