MySQL BIT

2025年3月17日 | 阅读 3 分钟

BIT 是 MySQL 中一种数据类型,允许我们存储位值。位值范围在 1-64 之间。它只存储 0 和 1。如果我们存储像 2 这样的位值,它会返回一个错误消息。通常,我们可以通过 CREATE TABLE 或定义语句来定义位值。

语法

以下是在 MySQL 中定义 BIT 数据类型的语法

在这里,关键字 BIT 代表存储二进制值,其值在变量 M 中指定。M 的值可以在 1-64 的范围内。如果我们没有指定 M 的值,它将包含默认值 1。因此,以下语句是等效的

如果我们想指定位值文字,我们可以使用 b'value'0bvalue 表示法。在此表示法中,value 代表一个只能由零和一组成的二进制值。例如,b'111' 和 b'10000000' 分别代表 7 和 128。

位值文字的默认字符集是二进制字符串。请看下面的语句

MySQL BIT 示例

让我们通过一个例子来理解 MySQL 中的 BIT 概念。首先,我们将创建一个名为 my_calendars 的新表,其中包含名为 'days' 的 BIT(7) 列。请看下面的语句

'days' 列的值表示是否为工作日或休息日。其中 1 代表工作日,0 代表休息日。

假设 2020 年一周中的星期六星期日不是工作日。在这种情况下,我们可以将记录插入 my_calendars 表,如下所示

接下来,执行以下查询以检索 my_calendar 表中的数据

我们应该得到如下输出

MySQL BIT

我们可以看到检索结果没有显示我们期望格式的数据。因此,我们将使用 BIN() 函数以二进制形式检索数据。为此,我们需要专门将 'days' 列调用为 BIN()。

执行后,我们将以期望的方式获得输出。

MySQL BIT

如果我们插入的位值小于 M 位,MySQL 会自动在指定的位值的左侧添加零。假设第三周的第 1 天是休息日,我们可以将 01111100 插入 'days' 列。请看下面的语句

验证数据后,您会发现它工作正常。

MySQL BIT

我们可以看到检索到的输出移除了前导零,然后返回了结果。因此,我们将使用 LPAD() 函数来正确检索数据

请参见下面的输出

MySQL BIT

BIT 和 TINYINT 之间的区别

BIT 和 TINYINT 在 MySQL 中都有不同的用法。

BIT 数据类型用于存储 1 位的值,可以是 0 或 1。它存储的值范围是 1 到 64。如果我们尝试在 BIT 列中插入其他值(例如 2),MySQL 会发出错误。相反,TINYINT 数据类型用于存储 8 位整数值。它存储的值范围是 -128 到 +127 或 0 到 256,并占用 1 个字节。如果我们尝试在 TINYINT 列中插入其他值(例如 987),MySQL 会发出错误。

在本文中,我们学习了如何在 MySQL 表中使用和存储 BIT 数据类型。