Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL analytics endpoint в Microsoft Fabric
Warehouse в Microsoft Fabric
SQL база данных в 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 удовлетворяет свойствам хеш-функции: при применении к любым двум спискам выражений она возвращает одно и то же значение, если соответствующие элементы двух списков имеют одинаковый тип и равны при сравнении с помощью оператора equals (=).
Для данного определения значения 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
- sql_variant (если базовый тип sql_variant является строковым типом данных)
Например, строки McCavity и Mccavity имеют разные BINARY_CHECKSUM значения. Однако при использовании функции CHECKSUM на сервере, нечувствительном к регистру, значения контрольных сумм для данных строк совпадают. Следует избегать сравнения значения CHECKSUM со значением BINARY_CHECKSUM.
BINARY_CHECKSUM поддерживает любую длину типа varbinary(max) и до 255 символов типа nvarchar(n) / 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