Udostępnij za pomocą


binarne i varbinary (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Typy danych binarnych o stałej długości lub zmiennej długości.

Arguments

Binarny [ ( n ) ]

Dane binarne o stałej długości z długością n bajtów, gdzie n jest wartością z zakresu od 1 do 8000. Rozmiar magazynu to n bajtów.

Varbinary [ ( n | max ) ]

Dane binarne o zmiennej długości. n może być wartością z zakresu od 1 do 8000. max wskazuje, że maksymalny rozmiar magazynu wynosi 2^31–1 bajtów. Rozmiar magazynu to rzeczywista długość danych wprowadzonych + 2 bajty. Wprowadzone dane mogą mieć długość 0 bajtów. Synonim SQL ANSI dla zmiennej varbinary to różnice binarne.

Remarks

Domyślna długość to 1, gdy n nie jest określona w definicji danych lub instrukcji deklaracji zmiennej. Jeśli n nie zostanie określony z funkcją CAST , domyślna długość to 30.

Typ danych Użyj polecenia , gdy ...
binary rozmiary wpisów danych kolumny są spójne.
varbinary rozmiary wpisów danych kolumny różnią się znacznie.
varbinary(max) wpisy danych kolumny przekraczają 8000 bajtów.

Konwertowanie danych binarnych i varbinary

Podczas konwertowania danych z typu danych ciągu na binarny lub varbinary typ danych o nierównej długości, program SQL Server pads lub obcina dane po prawej stronie. Te typy danych ciągów to:

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

Gdy inne typy danych są konwertowane na binarne lub varbinary, dane są dopełniane lub obcinane po lewej stronie. Dopełnienie jest osiągane przy użyciu zera szesnastkowego.

Konwertowanie danych na typy danych binarnych i varbinary jest przydatne, jeśli dane binarne są najprostszym sposobem poruszania się po danych. W pewnym momencie można przekonwertować typ wartości na wartość binarną o wystarczająco dużym rozmiarze, a następnie przekonwertować go z powrotem. Ta konwersja zawsze skutkuje tą samą wartością, jeśli obie konwersje mają miejsce w tej samej wersji programu SQL Server. Binarna reprezentacja wartości może ulec zmianie z wersji na wersję programu SQL Server.

Możesz przekonwertować int, smallint i tinyint na binarne lub varbinary. Jeśli przekształcisz wartość binarną z powrotem na całkowitą, ta wartość różni się od oryginalnej wartości całkowitej, jeśli doszło do obcięcia. Na przykład następująca instrukcja SELECT pokazuje, że wartość 123456 całkowita jest przechowywana jako binarna 0x0001e240:

SELECT CAST( 123456 AS BINARY(4) );

Jednak poniższa SELECT instrukcja pokazuje, że jeśli obiekt docelowy binarny jest zbyt mały, aby pomieścić całą wartość, cyfry wiodące są dyskretnie obcięte tak, aby ta sama liczba jest przechowywana jako 0xe240:

SELECT CAST( 123456 AS BINARY(2) );

Poniższa partia pokazuje, że to dyskretne obcinanie może mieć wpływ na operacje arytmetyczne bez zgłaszania błędu:

DECLARE @BinaryVariable2 BINARY(2);

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

SELECT CAST( @BinaryVariable2 AS INT);
GO

Wynik końcowy to 57921, a nie 123457.

Note

Konwersje między dowolnym typem danych a typami danych binarnych nie mają gwarancji, że są takie same między wersjami programu SQL Server.