mysql数据类型为'BINARY(0)'有什么用?

时间:2019-04-28 12:44:01

标签: mysql sqldatatypes

现在,我正在尝试学习MySQL的详细信息。 BINARY类型需要与其参数所提供的一样多的存储字节,因此,例如,如果我将一列定义为BINARY(8),则它将占用8个字节。

在站点https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html#data-types-storage-reqs-strings上,有一个表将类型映射到它们的存储要求。它说我可以定义一个BINARY(0)。但是我认为这没有任何意义。 BINARY(0)表示我可以存储0个字节-没什么。我想念东西吗?它有什么用?或者是什么原因呢?

另一方面,我不能定义比255个字节更大的BINARY列。我一直认为255的原因是您从0开始计数。但是当您不需要BINARY(0)时,可以定义一个BINARY(256)而不会出现问题...

1 个答案:

答案 0 :(得分:1)

我不得不四处寻找,因为我不认识自己。从this link,我们可以看到BINARY(0)可以存储两种类型的值:

  • NULL
  • 空字符串

因此,您可以像使用不可为空的BINARY(0)列一样使用BIT(1)列,即使用true / false或yes / no列。但是,BINARY(0)的存储要求只有一位,这对于可为空的列不需要超出边界的其他存储。

由于NULL列的非BINARY(0)状态为空字符串,表示为零,因此您可以使用以下命令找到所有此类记录:

SELECT *
FROM yourTable
WHERE bin_zero_column = 0;

可以使用NULL找到未标记的WHERE bin_zero_column IS NULL记录。