在SQLite中,零字节字符串('')存储为文本类型,与NULL值不同,后者存储为NULL类型。如何在SQLite内部存储NULL值,它与空字符串有什么不同? 假设表中的每个值都存储有一个标识符,该标识符指示它是5种类型之一(Integer,Float,Text,Blob或Null),并且每次新值时都不希望重新组织表输入占用的空间比原始值多,我猜测除了识别值的数据类型的字节外,还有另一个条目 - 指向存储在某个堆栈中的实际值的指针,可能还有第三个条目给出条目的字节长度。那么,空值可以由NULL类型值后跟空指针指示。这将允许0长度的字符串('')与空值不同 我是否接近SQLite如何处理这个问题? Larry Hunsicker
答案 0 :(得分:2)
在SQLite的磁盘record format中,每列需要一个字节来指定其类型和长度。没有单独的指针或长度,NULL值和零长度字符串都具有零字节的内容大小,因此串行类型字节是所需的所有存储。
(更新某些数据时,会重写整行。)