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数据。