小编典典

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

all

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

特别是在编写和读取 PHP 脚本的上下文中。

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

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

以上似乎都不是最佳的。我倾向于使用 tinyint 0/1 变体,因为 PHP 中的自动类型转换为我提供了相当简单的布尔值。

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


阅读 126

收藏
2022-02-25

共1个答案

小编典典

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

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

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

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

MySQL 还指出:

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

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

2022-02-25