因为MySQL似乎没有任何“布尔”数据类型,你'滥用'哪种数据类型存储真/假的信息在MySQL?
特别是在编写和读取PHP脚本的上下文中。
随着时间的推移,我使用并看到了几种方法:
Tinyint, varchar字段包含0/1,
Varchar字段包含字符串'0'/'1'或'true'/'false'
最后枚举包含“true”/“false”两个选项的字段。
以上这些似乎都不是最佳选择。我倾向于选择tinyint 0/1变体,因为PHP中的自动类型转换相当简单地为我提供布尔值。
那么使用哪种数据类型呢?是否有我忽略的布尔值的类型设计?你认为使用一种或另一种类型有什么优点或缺点吗?
对于MySQL 5.0.3及更高版本,您可以使用BIT。手册上说:
从MySQL 5.0.3开始,BIT数据类型用于存储位字段
值。一种BIT(M)类型允许存储M位值。M能量程
从1到64。
否则,根据MySQL手册,你可以使用BOOL或BOOLEAN,这是tinyint(1)的别名:
Bool, Boolean:这些类型是TINYINT(1)的同义词。值为
0被认为是假的。非零
值被认为是真。
MySQL还声明:
我们打算实现全布尔值
类型搬运,按照
标准SQL,在未来的MySQL
释放。
引用:http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html