2017-07-01 22 views
0

在SQLite中,一個零字節字符串('')存儲爲文本類型,並且與NULL值不同,該值存儲爲NULL類型。在SQLite內部如何存儲NULL值,它與空字符串有什麼不同? 考慮到表中的每個值都存儲了一個標識符,表明它是5種類型之一(整數,浮點,文本,Blob或Null),並且人們不希望每次新建一個表時重新組織一個表輸入的值佔用了比原始值更多的空間,我猜測除了標識值的數據類型的字節之外,還有另外一個入口 - 一個指向實際值的指針,它存儲在某個棧中,可能還有一個第三項給出條目的字節長度。那麼,它可能是一個空值由一個NULL值的類型值表示,後面跟着一個空指針。這將允許長度爲0的字符串('')與空值不同。
我在哪裏接近SQLite如何處理? Larry Hunsicker什麼是SQLite中NULL值的內部表示?

回答

2

在SQLite的磁盤record format中,每列需要一個字節來指定其類型和長度。沒有單獨的指針或長度,並且NULL值和零長度字符串都具有零字節的內容大小,所以串行類型字節是所需的所有存儲。

(當某些數據更新時,整行將被重寫。)