Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Spalte varbinary(MAX) aktualisieren

Die zusätzliche 0 wird hinzugefügt, weil der gesamte Wert, auf den Sie sie setzen, ungerade ist. SQL Server füllt es mit einer zusätzlichen 0 auf, um es gerade zu machen.

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

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

Ihre 9 wird gelöscht, weil Sie eine ungerade Anzahl von Bytes eingeben, die den Maximalwert ausfüllen. Es wird also eine 0 eingefügt, aber dies überläuft die maximale Anzahl von Bytes und wird daher anscheinend auch abgeschnitten. Ich konnte Ihren Fehler reproduzieren ... kenne aber noch keinen Weg, ihn zu umgehen.

Hier ist der Wert, den ich für Ihren Test verwendet habe. Ignorieren Sie die Ergebnisse ... aber Sie können sie in Ihr eigenes SSMS kopieren und die korrekte Ausgabe sehen.

http://rextester.com/LMGQ8686