为什么可空的rowversion列在语义上等同于varbinary(8)?

Ɖia*_*zeƦ 6 sql-server database-design sqldatatypes

MSDN页面指出:

不可空的rowversion列在语义上等同于二进制(8)列.可空的rowversion列在语义上等同于varbinary(8)列.

鉴于不可存活的rowversion列在语义上等同于二进制(8)列,为什么可空的rowversion列在语义上等同于varbinary(8)列而不是可空的二进制(8)列?

这是否意味着可空的rowversion列在语义上在语义上不等于可空的二进制(8)列?

我的具体例子是我将有一个表,其中包含来自其他表的行的副本.某些源表具有rowversion而其他源表没有.因此,我的表中的"rowversion"列必须接受空值.我想了解为什么(或者如果)列应该是varbinary(8)null而不是binary(8)null.

小智 1

二进制 (8) 是恰好有 8 个字节的二进制。varbinary(8) 是最多 8 个字节的二进制文件。null 是 0 字节。它必须是可以有 0 或 8 个字节的形式。因此它必须是 varbinary。