sql >> Databáze >  >> RDS >> Sqlserver

Aktualizovat sloupec varbinary(MAX).

Extra 0 se přidává, protože celá hodnota, na kterou ji nastavujete, je lichá. SQL Server jej vyplní nulou navíc, aby byl vyrovnaný.

declare @varmax varbinary(max) 
set @varmax = 0x1234567         --odd
select @varmax                  --returns 0x01234567 with the padded 0

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

Vaše 9 je zrušeno, protože zadáváte lichý počet bajtů, který zaplňuje maximální hodnotu. Takže je vložena 0, ale to přeteče maximální počet bajtů, a tak je také zkráceno, jak se zdá. Podařilo se mi zopakovat vaši chybu... ale zatím nevím, jak ji obejít.

Zde je hodnota, kterou jsem použil pro váš test. Ignorujte výsledky... ale můžete je zkopírovat do vlastního SSMS a zobrazit správný výstup.

http://rextester.com/LMGQ8686




  1. SQL Server:Jak používat UNION se dvěma dotazy, které OBA mají klauzuli WHERE?

  2. Oracle 11g CREATE VIEW pomocí CONNECT BY a více tabulek

  3. Jak zastavit PHP v přidávání prázdných řádků/polí do databáze MYSQL

  4. Vytvoření webové aplikace, která může pracovat offline, ukládat data a poté je synchronizovat se vzdáleným MySQL, když je online?