问题

由于MySQL似乎没有任何"布尔"数据类型,你滥用的数据类型在MySQL中存储true / false信息?特别是在从/到PHP脚本的写入和读取的上下文中.

Over time I have used and seen several approaches:

  • tinyint, varchar fields containing the values 0/1,
  • varchar fields containing the strings '0'/'1' or 'true'/'false'
  • and finally enum Fields containing the two options 'true'/'false'.

上面的都不是最好的,我倾向于喜欢tinyint 0/1变体,因为PHP中的自动类型转换只是简单地提供了布尔值.

那么你使用哪个数据类型,有没有为我忽略的布尔值设计的类型?你使用一种类型看到任何优点或缺点吗?



解决方法

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

As of MySQL 5.0.3, the BIT data type is used to store bit-field values. A type of BIT(M) enables storage of M-bit values. M can range from 1 to 64.

否则,根据MySQL手册,您可以使用bool和boolean,它们是 tinyint (1):

Bool, Boolean: These types are synonyms for TINYINT(1). A value of zero is considered false. Non-zero values are considered true.

MySQL还声明:

We intend to implement full boolean type handling, in accordance with standard SQL, in a future MySQL release.

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

BTW:这只是 https://google.com/search?的问题. q = mysql + boolean + datatype .

有趣的不是这个链接,几年前发布,已成为递归.




相关问题推荐