一尘不染

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

mysql

由于MySQL似乎没有任何“布尔”数据类型,因此您“滥用”哪种数据类型在MySQL中存储正确/错误信息?

尤其是在从PHP脚本进行读写的情况下。

随着时间的流逝,我已经使用并看到了几种方法:

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

以上都不是最佳选择。我倾向于使用tinyint 0/1变体,因为PHP中的自动类型转换使我可以很简单地获得布尔值。

那么,您使用哪种数据类型?是否有为我忽略的布尔值设计的类型?通过使用一种或另一种类型,您是否看到任何优点/缺点?


阅读 509

收藏
2020-05-17

共1个答案

一尘不染

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

从MySQL 5.0.3开始,BIT数据类型用于存储位字段值。BIT(M)类型可以存储M位的值。M的范围是1到64。

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

Bool,布尔值:这些类型是TINYINT(1)的同义词。零值被认为是错误的。非零值被认为是正确的。

MySQL还指出:

我们打算在将来的MySQL版本中根据标准SQL实现完整的布尔类型处理。

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

2020-05-17