【问题标题】:What is the internal representation of a NULL value in SQLite?SQLite 中 NULL 值的内部表示是什么?
【发布时间】:2017-07-01 20:01:22
【问题描述】:

在 SQLite 中,零字节字符串 ('') 存储为文本类型,与 NULL 值不同,后者存储为 NULL 类型。 NULL 值如何在 SQLite 内部存储,它与空字符串有何不同? 鉴于表中的每个值都存储有一个标识符,该标识符指示它是 5 种类型(整数、浮点数、文本、Blob 或 Null)之一,并且不希望每次出现新值时都必须重新组织表输入占用比原始值更多的空间,我猜测除了标识值的数据类型的字节之外,还有另一个条目 - 指向存储在某个堆栈中的实际值的指针,可能还有第三个条目给出条目的字节长度。那么,空值可能由 NULL 类型值后跟空指针来指示。这将允许长度为 0 的字符串 ('') 与空值不同。
我是否接近 SQLite 处理此问题的方式? 拉里·亨斯克

【问题讨论】:

    标签: sqlite null


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2010-10-13
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2010-12-22
      • 2010-11-11
      • 2019-07-23
      • 1970-01-01
      相关资源
      最近更新 更多