SQL Server中的DATALENGTH VARCHAR

Her*_*zuk 2 sql t-sql sql-server

根据MSDN,VARCHAR数据类型的存储大小是输入数据的实际长度+ 2个字节.我试图理解为什么在运行此查询时:

DECLARE @VARCHAR VARCHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT DATALENGTH(@VARCHAR) AS Bytes, LEN(@VARCHAR) AS Characters;
Run Code Online (Sandbox Code Playgroud)

@VARCHAR的存储大小与CHAR数据类型相同,它是25而不是27(25 + 2).

它与DATALENGTH功能有关吗?

Sco*_*t C 5

datalength将告诉您数据的字节数,其中不包括存储中该数据之前的2个字节.varchar的2字节开销用于记录字符串中的字节数 - 即在您的情况下为25