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

47 浏览
0 Comments

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

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

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

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

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

以上方法似乎都不是最佳的方法。我倾向于使用tinyint 0/1变体,因为PHP中的自动类型转换可以简单地给我布尔值。

那么您使用哪种数据类型?我有没有忽略设计用于布尔值的类型?使用一种类型还是另一种类型会有哪些优缺点?

admin 更改状态以发布 2023年5月24日
0
0 Comments

BOOLBOOLEANTINYINT(1)的同义词。零代表false,其他值代表true。更多信息点击这里

0
0 Comments

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

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

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

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

MySQL 还声明:

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

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

0