Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: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