MySQL中存储布尔值的数据类型是什么?

36 浏览
0 Comments

MySQL中存储布尔值的数据类型是什么?

此问题已经有答案了:

可能是重复的问题:

哪种MySQL数据类型用于存储布尔值?

我是.NET程序员,第一次使用MySQL数据库。

我想要存储布尔值,MySQL有BIT,但这个数据类型的.NET转换是UINT64

还有另一个数据类型TINYINT(1),它的.NET等效类型是System.Boolean,它可以满足我的要求。

但为什么我会使用TINYINT(1)(可以存储值例如123, 22),而不是BIT它还将占用比BIT更多的空间(我猜)?使用它可能是合法的,但我认为这不是道德的。

有人能帮助我澄清我的疑问吗?

admin 更改状态以发布 2023年5月23日
0
0 Comments

BIT 并非以你想象的方式工作,它通常用于存储位域BIT(M) 大约需要 (M+7)/8 (整数算术)字节的存储空间。该使用 BIT(1) 需要一整个字节,这与 TINYINT 相同,所以不要担心。

如果你有兴趣,各个类型的存储需求可以在这里找到。

0
0 Comments

MySQL 有 BOOL 和 BOOLEAN,但它们是 TINYINT(1) 的同义词。零被视为 false,非零值被视为 true。我猜 MySQL 的某个人考虑了一下,并决定 TINYINT(1) 是首选。我自己一直都是这样使用的。这个类似的问题中还有一些更多的信息: What is the difference between BIT and TINYINT in MySQL?

0