【mysql】位类型BIT

举报
兮动人 发表于 2022/03/06 10:26:59 2022/03/06
【摘要】 位类型: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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。