如何在MySQL中存储布尔数据类型?

哪种数据类型用于存储MySQL中的true/false信息?

特别是在使用PHP脚本编写和阅读时。

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

tinyint, varchar fields containing the values 0/1,
varchar fields containing the strings '0'/'1' or 'true'/'false'
and finally enum Fields containing the two options 'true'/'false'.

没有一个看起来是最优的,我更喜欢tinyint 0/1 variant ,因为PHP中的自动类型转换给了我相当简单的布尔值。

那么,是否有为我忽略的布尔值设计的类型?

您是否看到使用这种或那种类型的优点/缺点?


有很多选择。

为了与许多不同的MySQL客户端,客户端库,ORM等兼容,我们已经解决了这个问题

 col  TINYINT(1) UNSIGNED COMMENT 'boolean, ...'

除了布尔值之外,我们不使用TINYINT(1) UNSIGNED数据类型。 (我们可以添加NOT NULL 。)我们添加一个注释,其中“boolean”作为第一个字符串,然后是实际描述。

请注意, (1)不会影响可以存储的值的范围。 它仍然可以保存从0到255的整数值。我们只是包含它来帮助将我们的“布尔”类型与其他TINYINT值(它们不是布尔值)区分开来。

我们将NULL值作为NULL处理,将0值设置为“false”,将任何其他值视为“true”...与MySQL在布尔上下文中解释整数值的方式相同。

我们尚未遇到无法处理整数类型的客户端。


对于MySQL 5.0.3及更高版本,您可以使用BIT或TINYINT。

在这里你有一个更详细的答案


对于mysql,使用类型BOOLEAN NOT NULL类型

ALTER TABLE `products` ADD `test` BOOLEAN NOT NULL;

如果布尔不工作使用微小的int像TINYINT(1)NOT NULL例如。 ALTER TABLE产品ADD测试TINYINT(1) NOT NULL;

tinyint中的重要 TINYINT(1)值是必需的。

链接地址: http://www.djcxy.com/p/25149.html

上一篇: How to store boolean datatype in MySQL?

下一篇: is it practical to use bit data type to store true/false into sql database?