表结构
CREATE TABLE `t3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bi` bit(8) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入
insert into t3 (bi) values (11);
对于bit类型,实际保存的是二进制数。bit(8)表示该字段最多保存8位二进制数,也就是说最大保存整数255.
查询
select bi+0 from t3;
结果
+------+ | bi+0 | +------+ | 11 | +------+
对于bit类型,查询数据的格式是 (字段+0)
插入
insert into t3 values (65);
查询
select bi from t3;
结果
+------+ | bi | +------+ | | | A | +------+
说明bit类型的值,在普通查询中是以ascii字符输出的,由于ascii码值11是不可打印字符,所以显示为空。以(字段+0)形式是以ascii码值输出
查询
select bin(bi+0),oct(bi+0),hex(bi+0) from t3;
结果
+-----------+-----------+-----------+ | bin(bi+0) | oct(bi+0) | hex(bi+0) | +-----------+-----------+-----------+ | 1011 | 13 | B | +-----------+-----------+-----------+
在insert时插入二进制数据的语法是 b'value'
插入
insert into t3 (bi) values (b'11')
查询
select bi+0, bin(bi+0),oct(bi+0),hex(bi+0) from t3;
结果
+------+-----------+-----------+-----------+ | bi+0 | bin(bi+0) | oct(bi+0) | hex(bi+0) | +------+-----------+-----------+-----------+ | 11 | 1011 | 13 | B | | 3 | 11 | 3 | 3 | +------+-----------+-----------+-----------+
插入
insert into t3 (bi) values ('bc');
插入字符串,严格模式下报错,非严格模式下保存值为bit(8)的最大值255