可能重复:
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
更多的空间(我猜)?使用它可能是合法的,但我不认为它是等价的。
有人可以帮助并澄清我的疑问吗?
答案 0 :(得分:7)
MySQL有BOOL和BOOLEAN,但它们是TINYINT(1)的同义词。值为零被视为false。非零值被认为是真实的。我猜MySQL的某个人想到了它并决定TINYINT(1)是首选方式。我一直都在使用它。
在这个类似问题中还有一些信息:What is the difference between BIT and TINYINT in MySQL?
答案 1 :(得分:2)
BIT
无法按照您的想法运行,它通常用于存储bitfields和BIT(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