В некоторых случаях я получал последний проигрыш при преобразовании 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.
Самое странное, что если я использую varchar (MAX) вместо varchar (8000) при касте, проблем не будет.
Может ли кто-нибудь сказать мне причину проблемы?
PS: я запускаю SQL в MS SQL Server 2008.
Спасибо!