Delen via


binary en varbinary (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Binaire gegevenstypen van vaste lengte of variabele lengte.

Arguments

binair [ ( n ) ]

Binaire gegevens met vaste lengte met een lengte van n bytes, waarbij n een waarde is van 1 tot en met 8.000. De opslaggrootte is n bytes.

varbinary [ ( n | max ) ]

Binaire gegevens met variabele lengte. n kan een waarde zijn van 1 tot en met 8.000. max geeft aan dat de maximale opslaggrootte 2^31-1 bytes is. De opslaggrootte is de werkelijke lengte van de ingevoerde gegevens + 2 bytes. De ingevoerde gegevens kunnen 0 bytes lang zijn. Het ANSI SQL-synoniem voor varbinary is binair verschillend.

Remarks

De standaardlengte is 1 wanneer n niet is opgegeven in een gegevensdefinitie- of variabeledeclaratie-instructie. Wanneer n niet is opgegeven met de CAST functie, is de standaardlengte 30.

Data type Gebruiken wanneer ...
binary de grootte van de kolomgegevensvermeldingen consistent zijn.
varbinary de grootte van de kolomgegevensgegevens varieert aanzienlijk.
varbinary(max) de kolomgegevensvermeldingen overschrijden 8.000 bytes.

Binaire en varbinaire gegevens converteren

Wanneer u gegevens van een gegevenstype tekenreeks converteert naar een binair of varbinair gegevenstype van ongelijke lengte, worden de gegevens aan de rechterkant afgekapt of afgekapt. Deze tekenreeksgegevenstypen zijn:

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

Wanneer andere gegevenstypen worden geconverteerd naar binair of varbinair, worden de gegevens aan de linkerkant opgevuld of afgekapt. Opvulling wordt bereikt met behulp van hexadecimale nullen.

Het converteren van gegevens naar de binaire en varbinaire gegevenstypen is handig als binaire gegevens de eenvoudigste manier zijn om gegevens te verplaatsen. Op een bepaald moment kunt u een waardetype converteren naar een binaire waarde van groot genoeg en vervolgens weer converteren. Deze conversie resulteert altijd in dezelfde waarde als beide conversies plaatsvinden op dezelfde versie van SQL Server. De binaire weergave van een waarde kan veranderen van versie in versie van SQL Server.

U kunt int, smallint en tinyint converteren naar binair of varbinair. Als u de binaire waarde weer converteert naar een geheel getal, is deze waarde anders dan de oorspronkelijke gehele waarde als afkapping is opgetreden. In de volgende SELECT-instructie ziet u bijvoorbeeld dat de waarde 123456 van het gehele getal wordt opgeslagen als een binair getal 0x0001e240:

SELECT CAST( 123456 AS BINARY(4) );

De volgende SELECT instructie geeft echter aan dat als het binaire doel te klein is om de volledige waarde te bevatten, de voorloopcijferen op de achtergrond worden afgekapt, zodat hetzelfde getal wordt opgeslagen als 0xe240:

SELECT CAST( 123456 AS BINARY(2) );

In de volgende batch ziet u dat deze stille afkapping van invloed kan zijn op rekenkundige bewerkingen zonder dat er een fout optreedt:

DECLARE @BinaryVariable2 BINARY(2);
  
SET @BinaryVariable2 = 123456;
SET @BinaryVariable2 = @BinaryVariable2 + 1;
  
SELECT CAST( @BinaryVariable2 AS INT);
GO

Het uiteindelijke resultaat is 57921, niet 123457.

Note

Conversies tussen elk gegevenstype en de binaire gegevenstypen zijn niet gegarandeerd hetzelfde tussen versies van SQL Server.

Limitations

Momenteel wordt in Microsoft Fabric alleen varbinary(n) ondersteund. De binaire en varbinary(max)-gegevenstypen worden niet ondersteund.

See also