哪种MySQL数据类型用于存储布尔值
由于MySQL似乎没有任何“布尔”数据类型,您在MySQL中存储真/假信息时,您滥用哪种数据类型?
特别是在写入和读取PHP脚本的情况下。
随着时间的推移,我使用并看到了几种方法:
以上都不是最佳。 我倾向于使用tinyint 0/1变体,因为PHP中的自动类型转换给了我相当简单的布尔值。
那么你使用哪种数据类型? 是否有为我忽略的布尔值设计的类型? 您是否看到使用这种或那种类型的优点/缺点?
对于MySQL 5.0.3及更高版本,您可以使用BIT
。 手册说:
从MySQL 5.0.3开始,BIT数据类型用于存储位域值。 一种BIT(M)可以存储M位值。 M可以从1到64。
否则,根据MySQL手册,您可以使用bint和boolean,它们是tinyint(1)的别名:
Bool,Boolean:这些类型是TINYINT(1)的同义词。 零值被认为是错误的。 非零值被认为是真实的。
MySQL还指出:
我们打算在未来的MySQL版本中按照标准SQL实现完整的布尔类型处理。
参考文献:http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html
顺便说一句:这只是https://google.com/search?q=mysql+boolean+datatype的问题。
有趣的是,这个链接几年前发布,已经成为递归。
BOOL
和BOOLEAN
是TINYINT(1)
同义词。 零是false
,其他的都是true
。 更多信息在这里。
这是一个优雅的解决方案,我很欣赏,因为它使用零数据字节:
some_flag CHAR(0) DEFAULT NULL
要将其设置为true,请设置some_flag = ''
并将其设置为false,请设置some_flag = NULL
。
然后为了测试true,检查some_flag是否IS NOT NULL
,并测试false,检查some_flag是否为IS NULL
。
(这种方法在Jon Warren Lentz,Baron Schwartz和Arjen Lentz的“高性能MySQL:优化,备份,复制和更多”中有描述。)
链接地址: http://www.djcxy.com/p/25713.html上一篇: Which MySQL data type to use for storing boolean values
下一篇: Bash/shell script to run C console application on multiple unix/linux terminals