由于 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 手册,您可以使用 BOOL
或 BOOLEAN
,它们目前的别名为 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/