3

我有一个带有 varbinary(max) 列的表,我正在尝试为该列分配一个零长度的二进制缓冲区,但是我没有在表中获取零长度值,而是得到一个 8000 字节长的值填充zeros:
8000 长零缓冲区
* 所示查询中的 dataSize 列是使用 DATALENGHT(data) ("SELECT _index, dataSize=DATALENGHT(data) , data FROM....") 添加的,并在表中显示值的实际大小

8000 字节长的空缓冲区从何而来?这是某种默认行为吗?

4

1 回答 1

0

如果您的源列是二进制(8000),那么DATALENGTH(data)将返回 8000(它是完全填充的)并且数据将包含完整的 8000 字节。

但是由于您正在使用

SELECT _index, dataSize=DATALENGTH(data), data FROM

它不能是二进制 (8000) 列 - 因为固定大小的列将为所有行报告相同的数据长度。很可能某些数据是BINARY(8000)在过去某个时间从变量或其他方式复制到那里的。

于 2011-02-16T15:01:50.457 回答