binary и varbinary (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Типы двоичных данных фиксированной или переменной длины.
Аргументы
binary [ ( n ) ]
Двоичные данные фиксированной длины с длиной n байт, где n — значение от 1 до 8 000. Размер при хранении составляет n байт.
varbinary [ ( n | max ) ]
Двоичные данные с переменной длиной. n может иметь значение от 1 до 8000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт. Размер хранения — это фактическая длина введенных данных плюс 2 байта. Введенные данные могут иметь размер 0 символов. В ANSI SQL синонимом для varbinary является binary varying.
Замечания
Если значение n в определении данных или инструкции объявления переменной не указано, длина по умолчанию равна 1. Если n не указан с CAST
функцией, длина по умолчанию составляет 30.
Тип данных | Применение |
---|---|
binary | Размер данных в столбце одинаков. |
varbinary | Данные в столбце значительно различаются по размеру. |
varbinary(max) | Длина элементов данных в столбце превышает 8000 байт. |
Преобразование двоичных и varbinary данных
При преобразовании данных из строкового типа данных в тип binary или varbinary разной длины SQL Server дополняет или усекает данные справа. Строковые типы данных:
- char
- varchar
- nchar
- nvarchar
- binary
- varbinary
- text
- ntext
- Изображение
При преобразовании других типов данных в тип binary или varbinary данные дополняются или усекаются слева. Дополнение осуществляется шестнадцатеричными нулями.
Если для обмена данными лучше всего подходит тип binary, то другие типы данных удобнее всего будет преобразовать в binary и varbinary. В определенный момент вы можете преобразовать тип значения в двоичное значение достаточно большого размера, а затем преобразовать его обратно. Результатом этого преобразования всегда является одно и то же значение, если оба преобразования выполняются с использованием одной и той же версии SQL Server. Двоичное представление значения может меняться в зависимости от версии SQL Server.
Вы можете преобразовать тип данных int, smallint и tinyint в binary или varbinary. При преобразовании значения типа binary обратно в целочисленное это значение будет отличаться от исходного в случае усечения. Например, в следующей инструкции SELECT показано, что целочисленное значение 123456
хранится как двоичное 0x0001e240
:
SELECT CAST( 123456 AS BINARY(4) );
Однако в следующей инструкции SELECT
показано, что если целевой тип binary слишком мал для хранения всего значения, то начальные цифры неявно усекаются и то же самое число хранится как 0xe240
:
SELECT CAST( 123456 AS BINARY(2) );
В следующем пакете показано, что это необъявленное усечение может повлиять на арифметические операции без возникновения ошибки.
DECLARE @BinaryVariable2 BINARY(2);
SET @BinaryVariable2 = 123456;
SET @BinaryVariable2 = @BinaryVariable2 + 1;
SELECT CAST( @BinaryVariable2 AS INT);
GO
Окончательный результат — 57921
, но не 123457
.
Примечание.
Преобразования любого типа данных в binary могут различаться в зависимости от версии SQL Server.
Ограничения
В настоящее время в Microsoft Fabric поддерживается только varbinary(n). Типы данных binary и varbinary(max) не поддерживаются.