binary и varbinary (Transact-SQL)binary and varbinary (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Типы двоичных данных фиксированной или переменной длины.Binary data types of either fixed length or variable length.

АргументыArguments

binary [ ( n ) ] Двоичные данные фиксированной длины размером в _n_байт, где n — значение от 1 до 8000.binary [ ( n ) ] Fixed-length binary data with a length of n bytes, where n is a value from 1 through 8,000. Размер при хранении составляет n байт.The storage size is n bytes.

varbinary [ ( n | max) ] Двоичные данные с переменной длиной.varbinary [ ( n | max) ] Variable-length binary data. n может иметь значение от 1 до 8000.n can be a value from 1 through 8,000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт.max indicates that the maximum storage size is 2^31-1 bytes. Размер хранения — это фактическая длина введенных данных плюс 2 байта.The storage size is the actual length of the data entered + 2 bytes. Введенные данные могут иметь размер 0 символов.The data that is entered can be 0 bytes in length. В ANSI SQL синонимом для varbinary является binary varying.The ANSI SQL synonym for varbinary is binary varying.

RemarksRemarks

Если значение n в определении данных или инструкции объявления переменной не указано, длина по умолчанию равна 1.The default length is 1 when n isn't specified in a data definition or variable declaration statement. Когда n не указано функцией CAST, длина по умолчанию равна 30.When n isn't specified with the CAST function, the default length is 30.

Тип данныхData type ПрименениеUse when ...
binarybinary Размер данных в столбце одинаков.the sizes of the column data entries are consistent.
varbinaryvarbinary Данные в столбце значительно различаются по размеру.the sizes of the column data entries vary considerably.
varbinary(max)varbinary(max) Длина элементов данных в столбце превышает 8000 байт.the column data entries exceed 8,000 bytes.

Преобразование типов данных binary и varbinaryConverting binary and varbinary data

При преобразовании данных из строкового типа данных в тип данных binary или varbinary разной длины, тип данных SQL ServerSQL Server дополняет или усекает данные справа.When converting data from a string data type to a binary or varbinary data type of unequal length, SQL ServerSQL Server pads or truncates the data on the right. Строковые типы данных:These string data types are:

  • charchar
  • varcharvarchar
  • ncharnchar
  • nvarcharnvarchar
  • binarybinary
  • varbinaryvarbinary
  • texttext
  • ntextntext
  • imageimage

При преобразовании других типов данных в тип binary или varbinary данные дополняются или усекаются слева.When other data types are converted to binary or varbinary, the data is padded or truncated on the left. Дополнение осуществляется шестнадцатеричными нулями.Padding is achieved by using hexadecimal zeros.

Если для обмена данными лучше всего подходит тип binary, то другие типы данных удобнее всего будет преобразовать в binary и varbinary.Converting data to the binary and varbinary data types is useful if binary data is the easiest way to move around data. В определенный момент вы можете преобразовать тип значения в двоичное значение достаточно большого размера, а затем преобразовать его обратно.At some point, you might convert a value type to a binary value of large enough size and then convert it back. Это преобразование всегда возвращает одно и то же значение, если оба преобразования выполняются с использованием одной и той же версии SQL ServerSQL Server.This conversion always results in the same value if both conversions are taking place on the same version of SQL ServerSQL Server. Двоичное представление значения может меняться в зависимости от версии SQL ServerSQL Server.The binary representation of a value might change from version to version of SQL ServerSQL Server.

Вы можете преобразовать тип данных int, smallint и tinyint в binary или varbinary.You can convert int, smallint, and tinyint to binary or varbinary. При преобразовании значения типа binary обратно в целочисленное это значение будет отличаться от исходного в случае усечения.If you convert the binary value back to an integer value, this value will be different from the original integer value if truncation has occurred. Например, в следующей инструкции SELECT показано, что целочисленное значение 123456 хранится как двоичное 0x0001e240:For example, the following SELECT statement shows that the integer value 123456 is stored as a binary 0x0001e240:

SELECT CAST( 123456 AS BINARY(4) );  

Однако в следующей инструкции SELECT показано, что если целевой тип binary слишком мал для хранения всего значения, то начальные цифры неявно усекаются и то же самое число хранится как 0xe240:However, the following SELECT statement shows that if the binary target is too small to hold the entire value, the leading digits are silently truncated so that the same number is stored as 0xe240:

SELECT CAST( 123456 AS BINARY(2) );  

В следующем пакете показано, что это необъявленное усечение может повлиять на арифметические операции без возникновения ошибки.The following batch shows that this silent truncation can affect arithmetic operations without raising an error:

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

Окончательный результат — 57921, но не 123457.The final result is 57921, not 123457.

Примечание

Преобразование любого типа данных в binary может различаться в зависимости от версии SQL ServerSQL Server.Conversions between any data type and the binary data types are not guaranteed to be the same between versions of SQL ServerSQL Server.

См. также разделSee also

Функции CAST и CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
Преобразование типов данных (ядро СУБД)Data Type Conversion (Database Engine)
Типы данных (Transact-SQL)Data Types (Transact-SQL)