现在,我正在尝试学习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)而不会出现问题...
答案 0 :(得分: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
记录。