binary und varbinary (Transact-SQL)

Gilt für:yesSQL Server (alle unterstützen Versionen) YesAzure SQL-Datenbank YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

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

Argumente

binary [ ( n ) ] Binärdaten mit einer festen Länge von n Bytes, wobei n einen Wert von 1 bis 8000 aufweisen kann. Die Speichergröße beträgt n Byte.

varbinary [ ( n | max) ] Binärdaten variabler Länge. n kann einen Wert von 1 bis 8000 aufweisen. 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

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

Datentyp Verwenden Sie
binary , wenn die Dateneinträge einer Spalte jeweils gleich lang sind.
varbinary , wenn sich die Dateneinträge einer Spalte in ihrer Größe erheblich unterscheiden.
varbinary(max) , wenn die Spaltendateneinträge 8000 Byte überschreiten.

Konvertieren von binary- und varbinary-Daten

Wenn Sie Daten von einem String-Datentyp in einen binären oder varbinären Datentyp mit ungleicher Länge konvertieren, füllt SQL Server die Daten auf der rechten Seite auf oder schneidet sie ab. Zu diesen String-Datentypen zählen:

  • char
  • varchar
  • nchar
  • nvarchar
  • binary
  • varbinary
  • text
  • ntext
  • image

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. Irgendwann konvertieren Sie möglicherweise einen Werttyp in einen binären Wert mit ausreichender Größe und konvertieren den Wert dann wieder zurück. Diese Konvertierung ergibt immer denselben Wert, wenn beide Konvertierungen auf derselben Version von SQL Server stattfinden. Die binäre Darstellung eines Wertes kann sich von Version zu Version 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 Ganzzahl abweichen, falls der Wert abgeschnitten wurde. Die folgende SELECT-Anweisung zeigt beispielsweise, dass der ganzzahlige Wert 123456 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.

Hinweis

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

Weitere Informationen

CAST und CONVERT (Transact-SQL)
Datentypkonvertierung (Datenbank-Engine)
Datentypen (Transact-SQL)