【发布时间】:2010-10-04 01:55:44
【问题描述】:
我不想在这里引发一场宗教战争,但在如何在数据库中表示布尔值方面似乎有两种思想流派。有人说bit 是合适的数据类型,而其他人则认为tinyint 更好。
我知道的唯一区别是:
-
bit:存储大小为 1 位,可能的值为 0 或 1 -
tinyint:存储大小为 1 字节,可能值为 0-255
当您需要表示布尔值时,哪种数据类型更好? tinyint 是否值得额外开销“以防万一”您需要值 > 1?
【问题讨论】:
-
“以防万一”似乎是一个非常流畅的数据库设计。为什么不将所有内容都存储为 NVARCHAR(MAX) 并覆盖所有基础?
-
TinyInt 是我的偏好。然后,在对字段进行汇总计数时,您不必强制转换它。此外,一些前端语言对 Bit 的解释与其他语言不同,使用 TinyInt 可以使验证检查对任何前端语言都通用。
-
我刚刚在 phpMyAdmin 中遇到了一个奇怪的问题。当我告诉它让该字段为 NULL 并且没有设置默认值时,它默认为 NULL 而不是 NULL。 +1 为 tinyint 顺便说一句
-
当导入表单 csv 文件 1 在 tinyint(1) 的情况下有效,但在 bit(1) 的情况下,您必须将其替换为 b'1'
-
在 SQL server 中位数据类型是 1 字节,tinyint 也是 1 字节。您可以使用内置函数 DATALENGTH(@MyVariable) 进行交叉检查
标签: sql mysql sql-server types