BINARY_CHECKSUM (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL Azure Synapse Analytics в хранилище Microsoft Fabric в Microsoft Fabric
Возвращает двоичное значение контрольной суммы, вычисленное для строки таблицы или для списка выражений.
Соглашения о синтаксисе Transact-SQL
Синтаксис
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
*
Указывает, что вычисление выполняется для всех столбцов таблицы. При выполнении функции BINARY_CHECKSUM столбцы с несопоставимыми типами данных игнорируются. Перечень несопоставимых типов данных
- курсор
- Изображение
- ntext
- text
- xml
А также несопоставимые определяемые пользователем типы среды CLR.
выражение
Выражение любого типа данных. При выполнении функции BINARY_CHECKSUM выражения с несопоставимыми типами данных игнорируются.
Типы возвращаемых данных
int
Замечания
Результат, возвращаемый функцией BINARY_CHECKSUM(*)
для строки таблицы, изменяется только при изменении указанной строки. BINARY_CHECKSUM
удовлетворяет свойствам хэш-функции. Функция, примененная к двум любым спискам выражений, возвращает одинаковое значение, если при сравнении оператором равенства (=) соответствующие элементы двух списков имеют одинаковый тип и равны. Для данного определения значения NULL указанного типа рассматриваются при сравнении как равные. Если хотя бы одно из значений в списке выражений меняется, то обычно меняется и контрольная сумма выражений. Но такие изменения не гарантируются. Поэтому, чтобы определить факт изменения значений, рекомендуется использовать функцию BINARY_CHECKSUM
только в том случае, если в вашем приложении допускается случайный пропуск изменений. В противном случае рекомендуется вместо этого использовать функцию HASHBYTES
. Когда указан хэш-алгоритм MD5, вероятность возвращения функцией HASHBYTES
одинакового результата для двух различных входных параметров намного ниже, чем при использовании BINARY_CHECKSUM
.
Функция BINARY_CHECKSUM
может применяться к списку выражений, причем ее результаты для данного списка совпадают. Функция BINARY_CHECKSUM
вернет одинаковый результат для двух любых списков выражений в том случае, если тип и байтовое представление соответствующих друг другу элементов списков совпадают. В данном случае значения NULL одинакового типа рассматриваются как значения с одинаковым байтовым представлением.
Функции BINARY_CHECKSUM
и CHECKSUM
похожи. Они могут быть использованы для вычисления контрольной суммы списка выражений, при этом порядок следования выражений влияет на значение результата. Порядок столбцов, используемый с BINARY_CHECKSUM(*)
, является порядком столбцов, указанным в таблице или определении представления. Такой порядок включает вычисляемые столбцы.
Функции BINARY_CHECKSUM
и CHECKSUM
возвращают различные значения для строковых типов данных, в которых из-за языкового стандарта строки с различными представлениями могут оказаться эквивалентными. Строковые типы данных
- char
- nchar
- nvarchar
- varchar
or
- sql_variant (если базовым типом для sql_variant является строковый тип данных).
Например, для строк McCavity и Mccavity функция BINARY_CHECKSUM
возвращает разные значения. Однако при использовании функции CHECKSUM
на сервере, нечувствительном к регистру, значения контрольных сумм для данных строк совпадают. Следует избегать сравнения значения CHECKSUM
со значением BINARY_CHECKSUM
.
Функция BINARY_CHECKSUM
поддерживает любую длину типа varbinary(max) и до 255 символов типа nvarchar(max).
Примеры
В этом примере для выявления изменений в строке таблицы используется функция BINARY_CHECKSUM
.
USE AdventureWorks2022;
GO
CREATE TABLE myTable (column1 INT, column2 VARCHAR(256));
GO
INSERT INTO myTable VALUES (1, 'test');
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
UPDATE myTable set column2 = 'TEST';
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
См. также
Агрегатные функции (Transact-SQL)
CHECKSUM_AGG (Transact-SQL)
КОНТРОЛЬНАЯ СУММА (Transact-SQL)
HASHBYTES (Transact-SQL)