Sdílet prostřednictvím


binární a varbinární (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Binární datové typy s pevnou délkou nebo proměnlivou délkou.

Arguments

binární [ ( n ) ]

Binární data s pevnou délkou s délkou n bajtů, kde n je hodnota od 1 do 8 000. Velikost úložiště je n bajtů.

varbinární [ ( n | max ) ]

Binární data s proměnnou délkou n může být hodnota od 1 do 8 000. Max udává, že maximální velikost úložiště je 2^31-1 bajtů. Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Zadaná data mohou mít délku 0 bajtů. Synonymum ANSI SQL pro varbinary je binární.

Remarks

Výchozí délka je 1, pokud není zadána v definici dat nebo příkazu deklarace proměnné. Pokud není zadána funkce CAST, je výchozí délka 30.

Datový typ Použít, když ...
binary velikosti datových položek sloupců jsou konzistentní.
varbinary velikosti datových položek sloupců se výrazně liší.
varbinary(max) datové položky sloupce překračují 8 000 bajtů.

Převod binárních a varbinárních dat

Při převodu dat z datového typu řetězce na binární nebo varbinární datový typ nerovné délky SQL Server pads nebo zkrátí data vpravo. Mezi tyto datové typy řetězců patří:

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

Pokud jsou jiné datové typy převedeny na binární nebo varbinární, data jsou vycpána nebo zkrácena vlevo. Odsazení se dosahuje pomocí šestnáctkových nul.

Převod dat na binární a varbinární datové typy je užitečný, pokud jsou binární data nejjednodušší způsob, jak se pohybovat kolem dat. V určitém okamžiku můžete převést typ hodnoty na binární hodnotu dostatečně velké velikosti a pak ho převést zpět. Tento převod vždy vede ke stejné hodnotě, pokud se oba převody provádějí ve stejné verzi SQL Serveru. Binární reprezentace hodnoty se může změnit z verze na verzi SQL Serveru.

Můžete převést int, smallint a tinyint na binární nebo varbinární. Pokud převedete binární hodnotu zpět na celočíselnou hodnotu, tato hodnota se liší od původní celočíselné hodnoty, pokud by došlo k ořezání. Například následující příkaz SELECT ukazuje, že celočíselná hodnota 123456 je uložena jako binární 0x0001e240:

SELECT CAST( 123456 AS BINARY(4) );

Následující SELECT příkaz však ukazuje, že pokud je binární cíl příliš malý na uložení celé hodnoty, počáteční číslice jsou bezobslužně zkráceny tak, aby stejné číslo bylo uloženo jako 0xe240:

SELECT CAST( 123456 AS BINARY(2) );

Následující dávka ukazuje, že toto tiché zkrácení může ovlivnit aritmetické operace bez vyvolání chyby:

DECLARE @BinaryVariable2 BINARY(2);

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

SELECT CAST( @BinaryVariable2 AS INT);
GO

Konečný výsledek je 57921, ne 123457.

Note

Převody mezi libovolným datovým typem a binárními datovými typy nejsou zaručeny stejné mezi verzemi SQL Serveru.