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

问题描述 投票:1回答:1

现在我正在努力学习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)而没有问题......

mysql sqldatatypes
1个回答
1
投票

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

  • 空值
  • 空字符串

因此,你可以像使用不可空的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找到。

© www.soinside.com 2019 - 2024. All rights reserved.