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

时间:2011-05-13 07:42:38

标签: c# mysql types sqldatatypes

  

可能重复:
  Which MySQL Datatype to use for storing boolean values?

我是.NET程序员,并且是我生命中第一次使用MySQL数据库。

我想存储布尔值,MySQL有BIT,但此数据类型的.NET转换为UINT64

还有另一种数据类型TINYINT(1),其.NET等效项为System.Boolean,它将满足我的目的。

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

有人可以帮助并澄清我的疑问吗?

3 个答案:

答案 0 :(得分:7)

MySQL有BOOL和BOOLEAN,但它们是TINYINT(1)的同义词。值为零被视为false。非零值被认为是真实的。我猜MySQL的某个人想到了它并决定TINYINT(1)是首选方式。我一直都在使用它。

在这个类似问题中还有一些信息:What is the difference between BIT and TINYINT in MySQL?

答案 1 :(得分:2)

BIT无法按照您的想法运行,它通常用于存储bitfieldsBIT(M)需要大约(M+7)/8(整数运算)字节的存储空间。使用BIT(1)无论如何都会占用整个字节,与TINYINT相同,所以不用担心。

如果您感兴趣,各种类型的存储要求位于here

答案 2 :(得分:1)

  

根据MySQL手册,你可以使用bool和boolean,它们是tinyint(1)的别名:

参考:Which MySQL data type to use for storing boolean values

与MS SQL的位数据类型相似

0 = False    1 = True