哪种数据类型用于在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中的自动类型转换非常简单地给出了布尔值。
那么,有没有为布尔值设计的类型,我忽略了它?
您是否看到使用某种类型的优点/缺点?
答案 0 :(得分:3)
有许多选项。
为了与许多不同的MySQL客户端,客户端库,ORM等兼容,我们已经确定
col TINYINT(1) UNSIGNED COMMENT 'boolean, ...'
我们不会将TINYINT(1) UNSIGNED
数据类型用于除布尔值之外的任何内容。 (我们可以添加NOT NULL
。)我们添加一个注释,使用" boolean"作为第一个字符串,然后是实际描述。
请注意, (1)
不会影响可以存储的值范围。它仍然可以保存0到255之间的整数值。我们只是包含它来帮助区分我们的" boolean"从其他TINYINT值中键入,这些值不是布尔值。
我们将NULL值处理为NULL,将值0
处理为" false",并将任何其他值视为" true" ...以同样的方式处理MySQL在布尔上下文中解释一个整数值。
我们没有遇到任何无法处理整数类型的客户端。
答案 1 :(得分:1)
对于MySQL 5.0.3及更高版本,您可以使用BIT或TINYINT。
Here你有一个更详细的答案
答案 2 :(得分:1)
FOR mysql使用类型 BOOLEAN NOT NULL 类型 像
ALTER TABLE `products` ADD `test` BOOLEAN NOT NULL;
如果布尔不工作则使用tiny int之类的
TINYINT(1)NOT NULL
例如。 ALTER TABLE
{产品{1}} {测试{1}}
重要强> tinyint里面的TINYINT(1)值是必要的。