sql-server - SQL Server 中为 NULL 时的位数据类型大小

标签 sql-server bit sqldatatypes

<分区>

SQL Server中的位数据类型是最小的数据类型,它只是一个值为0或1的位。

如果字段被更新为 0 值,那么在硬盘的那个字段点将存储一个 0,如果字段被更新为 1,那么 1 将被存储在硬盘中。

当它为NULL时,它存储了什么?

最佳答案

列的空状态与数据分开存储 - 每个数据行都有一个称为 NULL BITMAP 的部分,它为表中的每一列(无论是否可为空)保留一个位,用于保存空/非列的空状态。所以一个位列实际上需要两位 - 一位用于空状态,一位用于数据。

仅供引用,在 SQL Server 中位占用的数据空间是可变的 - 这取决于您有多少位列。它可以在一个字节中存储最多八位列,因此如果您只有一个位列,您仍然为该行使用一个完整的字节(其他七位将被忽​​略)。

关于sql-server - SQL Server 中为 NULL 时的位数据类型大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602454/

相关文章:

sql-server - LINQ(到 Oracle)- Row_Number() Over Partition By

c - 二进制符号和字节顺序

sql - 作为 sql 记录一部分的坐标的数据类型

postgresql - 位掩码的整数和位(n)数据类型之间有什么区别吗?

sql - 在 SQL 中将多行合并为具有单独列的单行

c# - 如何从 sql 多个表(具有外键的相关表)生成 c# 类

SQL - 如何显示多行结果之间的差异

c - 如何生成 256 位掩码

我可以引用 C 位域的另一部分吗?

postgresql - PSQL 中 DECIMAL 和 NUMERIC 数据类型的区别