Последний байт отсутствует при преобразовании из varbinary в varchar - PullRequest
1 голос
/ 09 апреля 2010

В некоторых случаях я получал последний проигрыш при преобразовании 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.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...