mysql bit 总结
来源:互联网 发布:网络舆情监测专业介绍 编辑:程序博客网 时间:2024/06/16 02:44
对于mysql 表里常用的 bit(1) 类型的列,有如下常用的插入方式。 现在就mysql 理解values ( ... ) 中的数据的几种方式总结如下 :
1、外层不套单引号的整数数据,如 values (1) : 这种数值不包含类型信息,只要其实际值不超过列类型的表达范围,就可以成功插入。 但若超过了列类型的表达范围,就会报 data too long 。如:
insert into temp values(1,127,3); #ok
insert into temp values(2,127,3); #no Data too long for column 'bTest' at row 1
2、对于mysql 中特殊的常量 - true 和 false ,
①、直接使用 : true / false ,相当于 1 / 0 ,故行为和 1 中相同
②、使用 'true' / 'false' ,相当于两个字符串,和整型无关,不能插入到整型类型的列中
3、外层单引号的整数数据 ,且最左边不加 b ,如 values(' 1 ') : 这种表达方式的整数常量数据,插入到bit 型列的时候,会将其转换为 这个单常量字符,对应的ascii 值,如果此值超过了对应bit型列所表达的数值,则会报 Data too long ,否则不会报错。
# 需要注意的是:
I、这种方式,即使插入成功,存储的也是字符二进制的值,如 '1' : 对应的是49
II、如 bit(8) 表示的是 0-255 ,而不是-128 - 127 ,内部存储的是无符号类型整数
对于bit型的列,非常忌讳按照这种方式来插入数据,如果插入报错了还好,如果插入成功了, 绝大部分可能内部是按照错误的方式存储的,除非先手动转了ascii码,如下所示 ,插入 '1' 实际上是 '49'
4、插入一句题外话,对于 '数值' 这样写法的数据,插入其他的整形列中,如 tinyint、smallint等,和不带单引号是等价的,系统会判断其值是否超过了对应列所表示的数据范围,而忽略其类型信息。即只要范围不超标,则可以插入到 tinyint、smallint、mediumint、int、bigint 这些所有的整数类型中。
5、使用【b ' 二进制数据 ' 】这种方式, 是二进制整形常量,这种二进制的整形常量,存储到bit 类型列的时候,也是按照二进制字面数值来存储的,而不是按照ascii的值,非常好用,但是,需要注意的是:
①、数据不能超过列类型表达的范围,如把 b'11'存入到 bit(1) 中,就会包data too long
②、b' ' ,这个单引号中间的部分,只能出现 0 或者 1,若出现了其他数据,如2 等,则会报语句解析错误。
部分测试代码如下:
drop table if exists `temp`;
CREATE TABLE if not exists `temp` (
`bTest` bit(1) NOT NULL,
`tiTest` TINYINT NOT NULL,
`blTest` tinyint(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#下面是插入成功的数据
delete from temp;
insert into temp values(1,127,3); #ok
insert into temp values(b'1',127,3); #ok
insert into temp values(true,127,3); #ok
#下面是插入出错的数据
insert into temp values(2,127,3); #no Data too long for column 'bTest' at row 1
insert into temp values('1',127,3); #no Data too long for column 'bTest' at row 1
insert into temp values(b'2',127,3); #no You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b'2',127,3)' at line 4
insert into temp values('11',127,3); #no Data too long for column 'bTest' at row 1
insert into temp values('true',127,3); #no Data too long for column 'bTest' at row 1
select * from `temp`;
- mysql bit 总结
- mysql的bit类型
- mysql 中的bit数据类型
- bit fields 总结
- Leetcode bit manipulation 总结
- mysql设置bit类型数据
- mysql妙用bit存储信息
- mysql关于bit类型用法
- Leetcode Bit Manipulation 题型总结
- zynq 加载bit方法总结
- MySQL-python Windows 64bit and 32bit distributions
- 总结:常用数据类型在16BIT,32BIT,64BIT系统下的长度
- mysql中bit型的处理
- Faster Blind MySQL Injection Using Bit Shifting
- Faster Blind MySQL Injection Using Bit Shifting
- Mysql:bit类型的查询与插入
- Mysql:bit类型的查询与插入
- 64bit mysql安装(win7系统)
- android使用AudioTrack播放多个音频文件
- uboot 分析之 start.s
- vector与优先队列
- python通过xlwt模块直接在网页上生成excel文件并下载
- Windows编程 Win32API中常见的数据类型
- mysql bit 总结
- 运营的渠道选择
- JS中使用EL表达式
- 区域监测
- 使用“橡皮筋类”画可再次移动修改的图形
- 仿IOS的dialog
- java写文件的几种方式
- Mac下用charles:http+https抓包笔记
- NGINX服务器如何配置404错误页面转向