MySQL BIT数据类型的实际使用

时间:2019-11-20 08:52:10  来源:igfitidea点击:

简介:在本教程中,您将了解MySQL BIT数据类型以及如何使用它在表中存储BIT数据。

MySQL BIT数据类型简介

允许您存储位值的BIT类型。
语法如下:

BIT(n)

BIT(n)最多可以存储n位值。
n的范围可以从1到64。

如果跳过默认值n,则默认值为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 BIT示例

以下语句创建一个名为working_calendars的新表,该表的days列为BIT(7):

CREATE TABLE working_calendars(
    y INT
    w INT,
    days BIT(7),
    PRIMARY KEY(y,w)
);

天列中的值指示该天是工作日还是休息日,即1:工作日,0:休息日。

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

INSERT INTO working_calendars(y,w,days)
VALUES(2017,1,B'1111100');

以下查询从working_calendar表中检索数据:

SELECT 
    y, w , days
FROM
    working_calendars;

如您所见,``天数''列中的位值已转换为整数。
要将其表示为位值,请使用BIN函数:

SELECT 
    y, w , bin(days)
FROM
    working_calendar;

如果您在BIT(n)列中插入一个小于n位的值,MySQL将在该位值的左侧填充零。

假设第二周的第一天关闭,您可以将01111100插入到天数列中。
但是,由于MySQL将在左边填充一个零,因此111100值也将起作用。

INSERT INTO working_calendars(y,w,days)
VALUES(2017,2,B'111100');

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

SELECT 
    y, w , bin(days)
FROM
    working_calendars;

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

SELECT 
    y, w , lpad(bin(days),7,'0')
FROM
    working_calendars;

它按预期工作。

在本教程中,您学习了MySQL BIT数据类型以及如何使用它在表中存储BIT数据。