位字段类型。M表示每个值的位数,范围为从1到64。如果M被省略, 默认为1。
· TINYINT[(M)] [UNSIGNED] [ZEROFILL] (同义词 )
很小的整数。带符号的范围是-128到127。无符号的范围是0到255。
这里的TINYINT有符号和无符号为什么会存在这么大的差异呢?这就是今天重点要说的问题。Tinyint占用1字节的存储空间,即8位(bit)。那么Tinyint的取值范围怎么来的呢?我们先看无符号的情况。无符号的最小值即全部8位(bit)都为0,换算成十进制就是0,所以无符号的Tinyint的最小值为0.无符号的最大值即全部8bit都为1,11111111,换算成十进制就是255.这很好理解。有符号的Tinyint的取值范围是怎么来的呢?在计算机中,用最高位表示符号。0表示正,1表示负,剩下的表示数值。那么有符号的8bit的最小值就是
11111111=-127
表示负值
最大值:
01111111=+127
表示正值
希望可以帮到你!知道的就是这么多。
最近开发要用一个标志数据,就选择了mysql的BIT(1)数据类型,默认想着是整数类型的范畴,按整数数值来处理,结果不行,遇到了问题,这里整理给大家。
问题表现,用常用的办法获取到的字符是个方块,方块转布尔类型,根本转不了,值是错误的。普通的整数转换代码如下:
用上面的代码转换atoi转的是个方块,得不到数据库里的值,但是用mysql的客户端workbench正常没问题。
认真分析了取值用到的数组类型情况,用以下代码解决了问题:
上面代码对应的mysql是phpstudy里mysql 5.5.38版本,其它版本是不是这样不太确定。
另外可以用CAST进行数据类型转换,比如:
但这样写sql语句麻烦,不如直接用字段名方便,但改sql语句和改C++取值代码,看个人喜好,都可以解决问题。
整体代码如下:
如果需要这一套开发环境,也可以联系我,VS2010,MFC,mysql连接库,构造连接字符串,连接,执行sql语句,返回结果。
Bit称为位数据类型,其数据有两种取值:0和1,长度为1位。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。
补充:
1、MySQL 是一个关系型数据库,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
2、MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
3、MySQL 软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
4、由于其社区版的性能卓越,搭配 PHP ,Linux和 Apache 可组成良好的开发环境,经过多年的web技术发展,在业内被广泛使用的一种web服务器解决方案之一,称之为LAMP。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)