【发布时间】:2011-02-26 15:17:50
【问题描述】:
我对 SQL/数据库一无所知,但我正在和一位从事大量数据库工作的朋友聊天,讨论了一些数据库如何使用“布尔”字段,该字段除了 true 和 false 之外还可以取 NULL 值.
对此,他发表了如下评论:“值得微软称赞的是,他们从来没有将这种字段称为布尔值,他们只是稍微称呼它。而且它是一个真实的位 - 如果你有八个或一条记录中的位域较少,只需要一个字节就可以全部存储。”
当然这对我来说似乎是不可能的 - 如果该字段可以保存三个值,那么您不会将其中的八个值放入一个字节中。我的朋友同意这看起来很奇怪,但恳求对底层内部的无知,并说据他所知,从 SQL 端看,这样的字段可以保存三个值,并且确实需要一个字节的存储空间.我想我们中的一个人有一根电线交叉。谁能解释一下这里到底发生了什么?
【问题讨论】:
-
Jon Skeet 可以将三值字段存储在一个位中。
-
呸呸呸我早该看到的!
标签: sql-server database null boolean bit-fields