binary und varbinary (Transact-SQL)

Binäre Datentypen mit fester Länge bzw. mit variabler Länge.

  • binary [ ( n ) ]
    Binärdaten fester Länge mit einer Länge von n Bytes, wobei n ein Wert zwischen 1 und 8.000 ist. Die Speichergröße beträgt n Bytes.

  • varbinary [ ( n | max) ]
    Binärdaten mit variabler Länge. n muss ein Wert zwischen 1 und 8.000 sein. max gibt an, dass die maximale Speichergröße 2^31-1 Byte beträgt. Die Speicherplatzgröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte. Die eingegebenen Daten können 0 Byte lang sein. Das ANSI SQL-Synonym für varbinary ist binary varying.

Hinweise

Wenn n in einer Datendefinitions- oder Variablendeklarationsanweisung nicht angegeben ist, beträgt die Standardlänge 1. Falls n in der CAST-Funktion nicht angegeben ist, beträgt die Standardlänge 30.

Verwenden Sie binary, wenn die Größe der Spaltendateneinträge konsistent ist.

Verwenden Sie varbinary, wenn die Größe der Spaltendateneinträge erheblich variiert.

Verwenden Sie varbinary(max), wenn die Spaltendateneinträge 8.000 Byte überschreiten.

Konvertieren von binary- und varbinary-Daten

Wenn Daten von einem string-Datentyp (char, varchar, nchar, nvarchar, binary, varbinary, text, ntext oder image) in einen binary- oder varbinary-Datentyp anderer Länge konvertiert werden, füllt Microsoft SQL Server die Daten nach rechts auf oder schneidet sie rechts ab. Bei der Konvertierung anderer Datentypen in binary oder varbinary werden die Daten nach links aufgefüllt oder links abgeschnitten. Für die Auffüllung werden hexadezimale Nullen verwendet.

Das Konvertieren von Daten in die Datentypen binary und varbinary ist hilfreich, wenn binary-Daten die einfachste Möglichkeit zum Verschieben von Daten darstellen. Beim Konvertieren aller Werte eines beliebigen Datentyps in einen ausreichend großen binären Wert und dem anschließenden Konvertieren in den ursprünglichen Datentyp ergibt sich stets derselbe Wert, wenn beide Konvertierungen mit der gleichen Version von SQL Server ausgeführt werden. Die binäre Darstellung eines Werts kann sich zwischen den Versionen von SQL Server ändern.

Sie können die Datentypen int, smallint und tinyint in die Datentypen binary oder varbinary konvertieren; wenn Sie allerdings den binary-Wert wieder zurück in einen ganzzahligen Wert konvertieren, kann das Ergebnis von der ursprünglichen ganzen Zahl abweichen, falls der Wert abgeschnitten wurde. Die folgende SELECT-Anweisung zeigt beispielsweise, dass der ganzzahlige Wert 123456 in der Regel als binärer Wert 0x0001e240 gespeichert wird:

SELECT CAST( 123456 AS BINARY(4) );

Diese SELECT-Anweisung zeigt, dass die vorangestellten Nullen automatisch abgeschnitten werden, wenn das binary-Ziel für die Aufnahme des gesamten Werts zu klein ist. Die gleiche Zahl wird daher als 0xe240 gespeichert:

SELECT CAST( 123456 AS BINARY(2) );

Der folgende Batch zeigt, dass sich das automatische Abschneiden des Werts auf arithmetische Operationen auswirken kann, ohne dass ein Fehler ausgelöst wird:

DECLARE @BinaryVariable2 BINARY(2);

SET @BinaryVariable2 = 123456;
SET @BinaryVariable2 = @BinaryVariable2 + 1;

SELECT CAST( @BinaryVariable2 AS INT);
GO

Das endgültige Ergebnis ist 57921 und nicht 123457.

HinweisHinweis

Konvertierungen zwischen einem beliebigen Datentyp und den binary-Datentypen sind bei unterschiedlichen SQL Server-Versionen nicht unbedingt identisch.

Siehe auch

Verweis

CAST und CONVERT (Transact-SQL)

Datentypen (Transact-SQL)

Konzepte

Datentypkonvertierung (Datenbankmodul)