将空二进制值分配给varbinary(MAX)列会创建一个8000字节长的列

我有一个varbinary(max)列的表,我试图为该列分配一个零长度的二进制缓冲区,但不是在表中得到一个零长度值,我得到一个8000字节长的值填充零点: *使用DATALENGHT(数据)(“SELECT _index,dataSize = DATALENGHT(data),data FROM ....”)添加所示查询中的dataSize列,并在表的值上显示实际大小 8000字节长的空缓冲区来自哪里?这是某种默认行为吗?     
已邀请:
如果您的源列是二进制(8000),那么
DATALENGTH(data)
将返回8000(它是完全填充的),数据将包含完整的8000字节。 但是因为你正在使用
SELECT _index, dataSize=DATALENGTH(data), data FROM
它不能是二进制(8000)列 - 因为固定大小的列将为所有行报告相同的数据长度。可能有些数据在过去的某个时间从
BINARY(8000)
变量或其他方式复制到那里。     

要回复问题请先登录注册