如何在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?