这个问题在这里已有答案:
SQL Server中的位数据类型是最小的数据类型,它只是一个值为0或1的位。
如果字段已更新为0值,则在硬盘中的该字段中将存储0,如果字段更新为1则将存储在硬盘中。
当它为NULL时它会存储什么?
列的空状态与数据分开存储 - 每个数据行都有一个名为NULL BITMAP的部分,该部分对于表中的每一列都有一位(无论它是否可为空)保持null / not null状态专栏。所以一个位列实际上需要两位 - 一个用于空状态,一个用于数据。
仅供参考,SQL服务器中的数据空间是可变的 - 它取决于您拥有多少位列。它可以在一个字节中存储多达8位的列,因此如果您只有一个位列,则仍然使用该行的整个字节(忽略其他7位)。