Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Atualizar coluna varbinary(MAX)


O 0 extra está sendo adicionado porque todo o valor que você está configurando é ímpar. O SQL Server irá preenchê-lo com um 0 extra para torná-lo uniforme.
declare @varmax varbinary(max) 
set @varmax = 0x1234567         --odd
select @varmax                  --returns 0x01234567 with the padded 0

set @varmax = 0x12345678        --even
select @varmax                  --returns 0x12345678

Seu 9 está sendo descartado porque você está inserindo um número ímpar de bytes que preenche o valor máximo. Portanto, um 0 é inserido, mas isso transborda o número máximo de bytes e, portanto, também parece truncado. Consegui replicar seu erro... mas ainda não sei como contorná-lo.

Aqui está o valor que usei para o seu teste. Ignore os resultados... mas você pode copiá-los em seu próprio SSMS e ver a saída correta.

http://rextester.com/LMGQ8686