首页 文章

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

提问于
浏览
2

Which datatype is used for storing true/false information in MySQL?

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

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

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

似乎没有一个是最优的,我更喜欢 tinyint 0/1 variant ,因为PHP中的自动类型转换非常简单地给出了布尔值 .

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

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

3 回答

  • 1

    有很多选择 .

    为了与许多不同的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解释布尔上下文中的整数值的方式相同 .

    我们没有遇到任何无法处理整数类型的客户端 .

  • 3

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

    Here你有一个更详细的答案

  • 1

    FOR mysql使用类型 BOOLEAN NOT NULL 类似

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

    如果布尔不工作则使用像 TINYINT(1) NOT NULL 这样的小int . ALTER TABLE products ADD test TINYINT(1) NOT NULL;

    important TinYINT(1)tinyint内的值是必要的 .

相关问题