mysql bit类型_MySQL bit类型

本教程将向您介绍如何存储和使用位值的MySQL BIT数据类型。

MySQL BIT数据类型简介

MySQL提供了允许您存储位值的BIT类型。BIT(m)可以存储多达m位的值,m的范围在1到64之间。

如果省略,默认值为1。所以下列陈述是一样的:

column_name BIT(1);

以及,

column_name BIT;

要指定一个位值字面值,可使用b'val'或0bval来表示,该val是仅包含0和1的二进制值。

开头字符b可以写成B,例如,以下两种方式都一样:

b01

B11

上面书写方式都是有效的位字面量。

但是,前导0b是区分大小写的,所以不能使用0B。以下是无效的字面值:

0B'1000'

默认情况下,位值文字的字符集是二进制字符串,如下所示:

SELECT CHARSET(B''); -- binary

执行结果如下 -

mysql> SELECT CHARSET(B'');

+--------------+

| CHARSET(B'') |

+--------------+

| binary |

+--------------+

1 row in set

MySQL BIT示例

以下语句创建一个名为working_calendar的新表,其中的列类型和宽度指定为BIT(7):

USE testdb;

CREATE TABLE working_calendar(

y INT,

w INT,

days BIT(7),

PRIMARY KEY(y,w)

);

days列中的值表示工作日或休息日,即1:表示工作日,0表示休息日。

假设2017年第一周的星期六和星期五不是工作日,可以在working_calendar表中插入一行,如下所示:

INSERT INTO working_calendar(y,w,days)

VALUES(2017,1,B'1111100');

以下查询从working_calendar表检索数据,结果如下:

SELECT

y, w , days

FROM

working_calendar;

执行上面查询语句,得到以下结果 -

+------+---+---------+

| y | w | days |

+------+---+---------+

| 2017 | 1 | 1111100 |

+------+---+---------+

1 row in set

如上所见,days列中的位值被转换成一个整数。要将其表示为位值,请使用BIN函数:

SELECT

y, w , bin(days)

FROM

working_calendar;

执行上面查询语句,得到以下结果 -

+------+---+-----------+

| y | w | bin(days) |

+------+---+-----------+

| 2017 | 1 | 1111100 |

+------+---+-----------+

1 row in set

如果将值插入到长度小于m位的BIT(m)列中,MySQL将在位值的左侧使用零填充。

假设第二周的第一天关闭,可以向days列中插入01111100值。 但是,111100的值也可以工作,因为MySQL将使用零填充左侧。

INSERT INTO working_calendar(y,w,days)

VALUES(2017,2,B'111100');

要查看数据,使用与上述相同的查询:

SELECT

y, w , bin(days)

FROM

working_calendar;

执行上面查询语句,得到以下结果 -

+------+---+-----------+

| y | w | bin(days) |

+------+---+-----------+

| 2017 | 1 | 1111100 |

| 2017 | 2 | 111100 |

+------+---+-----------+

2 rows in set

如您所见,MySQL返回结果之前删除了前导零。 要正确显示可以使用LPAD函数:

SELECT

y, w , lpad(bin(days),7,'0')

FROM

working_calendar;

执行上面查询语句,得到以下结果 -

+------+---+-----------------------+

| y | w | lpad(bin(days),7,'0') |

+------+---+-----------------------+

| 2017 | 1 | 1111100 |

| 2017 | 2 | 0111100 |

+------+---+-----------------------+

2 rows in set

现在工作正常了。

在本教程中,您已经学会了如何使用MySQL BIT类型来存储位值。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值