mysql - 用于存储 boolean 值的 MySQL 数据类型

标签 mysql boolean sqldatatypes

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

尤其是在从/向 PHP 脚本写入和读取的上下文中。

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

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

以上都不是最佳的。我更喜欢 tinyint 0/1 变体,因为 PHP 中的自动类型转换给我的 boolean 值相当简单。

那么您使用哪种数据类型?有没有为我忽略的 boolean 值设计的类型?您看到使用一种或另一种类型有什么优点/缺点吗?

最佳答案

对于 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 手册,您可以使用 BOOLBOOLEAN,它们目前的别名为 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

关于mysql - 用于存储 boolean 值的 MySQL 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/289727/

相关文章:

java - 我收到很多 select @@session.tx_read_only,有人会这样做吗?

mysql - Select * from table WHERE `column` = x if `column` != -1

c++ - 为什么在 C++ 中存在从指针到 bool 的隐式类型转换?

java - 如果 boolean 变量为真,如何让程序打印?

where 子句上的 mysql boolean 值

sql-server - 在 SQL 数据库中插入波斯语字符

mysql - 是否可以更改数据库的 mysql 转储文件中的数据类型?

datetime - DynamoDB 中的时间戳应使用什么数据类型?

php - 使用php上传图片到sql数据库时显示错误

MySQL 查询 有问题吗?