SQLite中NULL值的内部表示是什么?

时间:2017-07-01 20:01:23

标签: sqlite null

在SQLite中,零字节字符串('')存储为文本类型,与NULL值不同,后者存储为NULL类型。如何在SQLite内部存储NULL值,它与空字符串有什么不同?  假设表中的每个值都存储有一个标识符,该标识符指示它是5种类型之一(Integer,Float,Text,Blob或Null),并且每次新值时都不希望重新组织表输入占用的空间比原始值多,我猜测除了识别值的数据类型的字节外,还有另一个条目 - 指向存储在某个堆栈中的实际值的指针,可能还有第三个条目给出条目的字节长度。那么,空值可以由NULL类型值后跟空指针指示。这将允许0长度的字符串('')与空值不同 我是否接近SQLite如何处理这个问题? Larry Hunsicker

1 个答案:

答案 0 :(得分:2)

在SQLite的磁盘record format中,每列需要一个字节来指定其类型和长度。没有单独的指针或长度,NULL值和零长度字符串都具有零字节的内容大小,因此串行类型字节是所需的所有存储。

(更新某些数据时,会重写整行。)