Tsql 从varbinary强制转换为varchar时缺少最后一个字节

Tsql 从varbinary强制转换为varchar时缺少最后一个字节,tsql,sql-server-2008,Tsql,Sql Server 2008,在某些情况下,我在将varbinary转换为varchar时丢失了最后一个字节。例如: DECLARE @binary varbinary(8000), @char varchar(8000) set @binary = 0x000082 set @char = CAST(@binary as varchar(8000)) select BinaryLength=DATALENGTH(@binary), CharLength=DATALENGTH(@char) 结果是 Bina

在某些情况下,我在将varbinary转换为varchar时丢失了最后一个字节。例如:

DECLARE @binary varbinary(8000),
        @char varchar(8000)
set @binary = 0x000082
set @char = CAST(@binary as varchar(8000))
select BinaryLength=DATALENGTH(@binary), CharLength=DATALENGTH(@char)
结果是

BinaryLength   CharLength
    3              2
受影响的字节值来自0x81-0xFE

奇怪的是,如果我在施法时使用varcharMAX而不是varchar8000,就没有任何问题了

有人能告诉我这个问题的根本原因吗

PS:我在MS sql server 2008中运行sql


谢谢

我在SQLServer2005和SQLServer2008Server上都试过了,每台上都得到了3个。这是重现您的问题的确切代码吗?请问数据库/服务器排序规则是什么?使用哪种SQL server版本、内部版本号、service pack、兼容性级别和排序规则?