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

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

因为MySQL似乎没有任何“布尔”数据类型,所以在MySQL中存储真实/错误信息时,您会“滥用”哪种数据类型?

特别是在编写和读取PHP脚本时。

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

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

上述任何一项似乎都不是最理想的。我倾向于使用tinyint 0/1变量,因为PHP中的自动类型转换给了我布尔值。

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


炎炎设计
浏览 2954回答 3
3回答

BIG阳

BOOL和BOOLEAN同义词TINYINT(1)..零是false,其他的都是true..

冉冉说

这是一个优雅的解决方案,我非常欣赏,因为它使用的是零数据字节:some_flag CHAR(0) DEFAULT NULL若要将其设置为真,请将其设置为some_flag = ''把它设为假的some_flag = NULL.然后,要测试是否为true,请检查是否有一些标志IS NOT NULL,若要测试是否为false,请检查是否有某个标志IS NULL.(这个方法在JonWarrenLentz、BaronSchwartz和ArjenLentz的“高性能MySQL:优化、备份、复制和更多”中进行了描述。)
打开App,查看更多内容
随时随地看视频慕课网APP