Pramatic Uses of MySQL BIT Data Type

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

MySQL BIT数据类型简介

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

BIT(n)Code language: SQL (Structured Query Language) (sql)

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

如果跳过,则 n 的默认值为 1。因此以下语句是等效的:

column_name BIT(1);
Code language: SQL (Structured Query Language) (sql)

column_name BIT;
Code language: SQL (Structured Query Language) (sql)

要指定位值文字,请使用b'val'0bval表示法,其中val是仅包含 0 和 1 的二进制值。

前导b可以写为B ,例如:

b01
B11 
Code language: SQL (Structured Query Language) (sql)

是有效的位文字。

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

0B'1000'
Code language: SQL (Structured Query Language) (sql)

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

SELECT CHARSET(B'); -- binary
Code language: SQL (Structured Query Language) (sql)

MySQL BIT示例

以下语句创建一个名为working_calendars新表,其中天数列为BIT(7)

CREATE TABLE working_calendars(
    y INT
    w INT,
    days BIT(7),
    PRIMARY KEY(y,w)
);
Code language: SQL (Structured Query Language) (sql)

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

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

INSERT INTO working_calendars(y,w,days)
VALUES(2017,1,B'1111100');
Code language: SQL (Structured Query Language) (sql)

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

SELECT 
    y, w , days
FROM
    working_calendars;
Code language: SQL (Structured Query Language) (sql)
MySQL BIT example

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

SELECT 
    y, w , bin(days)
FROM
    working_calendar;
Code language: SQL (Structured Query Language) (sql)
MySQL BIT BIN function

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

假设第二周的第一天休息,则可以在days数列中插入01111100 。然而, 111100值也将起作用,因为 MySQL 会向左侧填充 1 个零。

INSERT INTO working_calendars(y,w,days)
VALUES(2017,2,B'111100');
Code language: SQL (Structured Query Language) (sql)

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

SELECT 
    y, w , bin(days)
FROM
    working_calendars; 
Code language: SQL (Structured Query Language) (sql)
MySQL BIT insert example

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

SELECT 
    y, w , lpad(bin(days),7,'0')
FROM
    working_calendars;
Code language: SQL (Structured Query Language) (sql)
MySQL BIT LPAD example

它按预期工作。

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

本教程有帮助吗?