在SQLite中,零字节字符串(''(存储为文本类型,与存储为NULL 类型的 NULL 值不同。 NULL 值如何存储在 SQLite 内部,它与空字符串有何不同? 鉴于表中的每个值都存储有一个标识符,指示它是 5 种类型(整数、浮点数、文本、Blob 或 Null(之一,并且人们不希望每次输入新值时都重新组织表占用比原始值更多的空间,我猜除了标识值数据类型的字节之外, 还有另一个条目 - 一个指向存储在某处堆栈中的实际值的指针,可能还有第三个条目给出条目的长度(以字节为单位(。 因此,空值可能由 NULL 的类型值后跟空指针指示。 这将允许 0 长度字符串 (''( 不同于空值。
我是否接近SQLite如何处理这个问题? 拉里·亨西克
在SQLite的磁盘记录格式中,每列需要一个字节来指定其类型和长度。没有单独的指针或长度,NULL 值和零长度字符串的内容大小均为零字节,因此串行类型字节是所需的所有存储。
(更新某些数据时,将重写整行。