Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Endpoint analityki SQL w Microsoft Fabric
Magazyn w Microsoft Fabric
Baza danych SQL w Microsoft Fabric
Zwraca binarną sumę kontrolną obliczoną na podstawie wiersza tabeli lub listy wyrażeń.
Transact-SQL konwencje składni
Składnia
BINARY_CHECKSUM ( * | expression [ , ...n ] )
Uwaga / Notatka
Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
Arguments
*
Określa, że obliczenia obejmują wszystkie kolumny tabeli.
BINARY_CHECKSUM ignoruje kolumny nieporównywalnych typów danych podczas obliczeń. Nieporównywalne typy danych obejmują:
- kursor
- image
- ntext
- tekst
- xml
- Nieporównywalne typy wykonawcze w języku Common Language (CLR) zdefiniowane przez użytkownika
expression
Wyrażenie dowolnego typu.
BINARY_CHECKSUM ignoruje wyrażenia nieporównywalnych typów danych podczas obliczeń.
Typy zwracane
int
Uwagi
BINARY_CHECKSUM(*), obliczona na dowolnym wierszu tabeli, zwraca tę samą wartość, o ile wiersz nie zostanie później zmodyfikowany.
BINARY_CHECKSUM spełnia właściwości funkcji skrótu: gdy jest zastosowana na dowolnych dwóch listach wyrażeń, zwraca tę samą wartość, jeśli odpowiadające im elementy mają ten sam typ i są równe przy porównaniu z operatorem równości (=).
Dla tej definicji mówimy, że wartości zerowe określonego typu są porównywalne jako równe wartości. Jeśli przynajmniej jedna z wartości na liście wyrażeń się zmieni, suma kontrolna wyrażenia również może się zmienić. Jednak ta zmiana nie jest gwarantowana, więc aby wykryć, czy wartości się zmieniły, powinieneś używać BINARY_CHECKSUM tylko wtedy, gdy Twoja aplikacja toleruje okazjonalne pominięcie zmiany. W przeciwnym razie rozważ użycie HASHBYTES zamiast tego. Przy określonym algorytmie skrótu MD5 prawdopodobieństwo, że HASHBYTES zwróci ten sam wynik dla dwóch różnych wejść, jest znacznie niższe niż .BINARY_CHECKSUM
BINARY_CHECKSUM może działać nad listą wyrażeń i zwraca tę samą wartość dla określonej listy.
BINARY_CHECKSUM zastosowane na dowolnych dwóch listach wyrażeń zwracają tę samą wartość, jeśli odpowiadające im elementy mają ten sam typ i reprezentację bajtów. W tej definicji wartości zerowe określonego typu uważa się za mające tę samą reprezentację bajtów.
BINARY_CHECKSUM i CHECKSUM mają podobne funkcje. Mogą one być używane do obliczania wartości sumy kontrolnej na liście wyrażeń, a kolejność wyrażeń wpływa na wartość końcową. Kolejność kolumn używana dla BINARY_CHECKSUM(*) to kolejność kolumn określona w definicji tabeli lub widoku. To porządkowanie obejmuje kolumny obliczane.
BINARY_CHECKSUM oraz CHECKSUM zwracają różne wartości dla typów danych łańcuchów, gdzie lokalizacja może powodować porównywanie ciągów o różnej reprezentacji jako równych. Typy danych ciągów to:
- Char
- nchar
- nvarchar
- varchar
- sql_variant (jeśli bazowym typem sql_variant jest typ danych ciągu danych)
Na przykład stringi McCavity i Mccavity mają różne BINARY_CHECKSUM wartości. Natomiast dla serwera nierozróżniającego wielkość liter zwraca CHECKSUM te same wartości sumy kontrolnej dla tych ciągów znaków. Powinieneś unikać porównywania CHECKSUM wartości z wartościami BINARY_CHECKSUM .
BINARY_CHECKSUMobsługuje dowolną długość typu varbinary(max) oraz do 255 znaków typu nvarchar(n) / nvarchar(max).
Przykłady
Ten przykład służy BINARY_CHECKSUM do wykrywania zmian w wierszu tabeli.
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