【mysql】位类型BIT
【摘要】 位类型:BITBIT类型中存储的是二进制值,类似010110。二进制字符串类型长度长度范围占用空间BIT(M)M1 <= M <= 64约为(M + 7)/8个字节BIT类型,如果没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。这里(M)是表示二进制的位数,位数最小值为1,最大值为64。CREATE TABLE test_bit1(f1 BIT,f2 BIT(5),f3 B...
位类型:BIT
- BIT类型中存储的是二进制值,类似010110。
二进制字符串类型 | 长度 | 长度范围 | 占用空间 |
---|---|---|---|
BIT(M) | M | 1 <= M <= 64 | 约为(M + 7)/8个字节 |
- BIT类型,如果没有指定(
M
),默认是1
位。这个1
位,表示只能存1
位的二进制值。这里(M)是表示二进制的位数,位数最小值为1
,最大值为64
。
CREATE TABLE test_bit1(
f1 BIT,
f2 BIT(5),
f3 BIT(64)
);
INSERT INTO test_bit1(f1)
VALUES(1);
#Data too long for column 'f1' at row 1
INSERT INTO test_bit1(f1)
VALUES(2);
INSERT INTO test_bit1(f2)
VALUES(23);
DESC test_bit1;
INSERT INTO test_bit1(f1)
VALUES(0),(1);
控制台上查看是显示16进制的
- 超出范围,因为 bit 是二进制的,0和1,十进制的 2 转为二进制是 10,所以超出默认给出的1位范围
#Data too long for column 'f1' at row 1
INSERT INTO test_bit1(f1)
VALUES(2);
- 在 f2 中增加数据,f2 BIT(5),可以得知f2值的最大为:
1 1 1 1 1
,转为十进制为:31
,测试:
INSERT INTO test_bit1(f2)
VALUES(31);
-
超出后就会报错
-
注意:在向BIT类型的字段中插入数据时,一定要确保插入的数据在BIT类型支持的范围内。
-
使用SELECT命令查询位字段时,可以用
BIN()
或HEX()
函数进行读取。HEX()
表示十六进制
mysql> SELECT * FROM test_bit1;
+------------+------------+------------+
| f1 | f2 | f3 |
+------------+------------+------------+
| 0x01 | NULL | NULL |
| NULL | 0x17 | NULL |
+------------+------------+------------+
2 rows in set (0.00 sec)
mysql> SELECT BIN(f2),HEX(f2)
-> FROM test_bit1;
+---------+---------+
| BIN(f2) | HEX(f2) |
+---------+---------+
| NULL | NULL |
| 10111 | 17 |
+---------+---------+
2 rows in set (0.00 sec)
mysql> SELECT f2 + 0
-> FROM test_bit1;
+--------+
| f2 + 0 |
+--------+
| NULL |
| 23 |
+--------+
2 rows in set (0.00 sec)
- 可以看到,使用
b+0
查询数据时,可以直接查询出存储的十进制数据的值。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)