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

由于MySQL似乎没有任何“布尔”数据类型,在MySQL中存储真/假信息时,您会“滥用”哪种数据类型

尤其是在编写和读取PHP脚本时

随着时间的推移,我使用并看到了几种方法:

  • tinyint,varchar字段,包含值0/1
  • 包含字符串“0”/“1”或“true”/“false”的varchar字段
  • 最后,枚举包含两个选项“true”/“false”的字段

以上这些似乎都不是最优的。我倾向于选择tinyint 0/1变量,因为PHP中的自动类型转换非常简单地为我提供布尔值

那么您使用哪种数据类型呢?是否有一种类型是为布尔值设计的,而我忽略了它?你认为使用这种或那种类型有什么优点/缺点吗

对于MySQL 5.0.3及更高版本,可以使用BIT。手册上说:

从MySQL 5.0.3开始,位数据类型用于存储位字段
价值观一种类型的位(M)允许存储M位值。M罐范围
从1到64

否则,根据MySQL手册,您可以使用BOOLBOOLEAN,它们目前是tinyint(1)的别名:

Bool,Boolean:这些类型是TINYINT(1)的同义词。价值
零被认为是错误的。非零
值被认为是真的

MySQL还声明:

我们打算实现完全布尔
类型处理,根据
标准SQL,在未来的MySQL中
释放

参考资料:http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

发表评论