Sdílet prostřednictvím


BINARY_CHECKSUM (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsKoncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrátí binární kontrolní součet vypočítaný přes řádek tabulky nebo přes seznam výrazů.

Transact-SQL konvence syntaxe

Syntaxe

BINARY_CHECKSUM ( * | expression [ , ...n ] )

Poznámka:

Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Arguments

*

Specifikuje, že výpočet pokrývá všechny sloupce tabulky. BINARY_CHECKSUM při výpočtu ignoruje sloupce nesrovnatelných datových typů. Nesrovnatelné typy dat zahrnují:

  • kurzoru
  • image
  • ntext
  • text
  • xml
  • Nesrovnatelné uživatelsky definované uživatelské typy v běžném jazyce Common Language (CLR)

expression

Výraz libovolného typu. BINARY_CHECKSUM při výpočtu ignoruje výrazy nesrovnatelných datových typů.

Návratové typy

int

Poznámky

BINARY_CHECKSUM(*), vypočítán na libovolném řádku tabulky, vrací stejnou hodnotu, pokud řádek není později upraven. BINARY_CHECKSUM splňuje vlastnosti hashovací funkce: při aplikaci na libovolné dva seznamy výrazů vrací stejnou hodnotu, pokud odpovídající prvky obou seznamů mají stejný typ a jsou stejné při porovnání pomocí operátoru rovno (=).

Pro tuto definici říkáme, že nulové hodnoty určitého typu se srovnávají jako stejné hodnoty. Pokud se alespoň jedna z hodnot v seznamu výrazů změní, může se změnit i kontrolní součet výrazů. Tato změna však není zaručena, a proto byste měli pro zjištění, zda se hodnoty změnily, používat BINARY_CHECKSUM pouze tehdy, pokud vaše aplikace snese občasnou přehlédnutou změnu. Jinak zvažte použití HASHBYTES místo toho. U specifikovaného MD5 hashovacího algoritmu je pravděpodobnost, že vrátí HASHBYTES stejný výsledek pro dva různé vstupy, mnohem nižší než .BINARY_CHECKSUM

BINARY_CHECKSUM může pracovat nad seznamem výrazů a vrací stejnou hodnotu pro daný seznam. BINARY_CHECKSUM aplikované na libovolné dva seznamy výrazů vrací stejnou hodnotu, pokud odpovídající prvky obou seznamů mají stejný typ a reprezentaci bajtů. Pro tuto definici se nulové hodnoty určitého typu považují za stejné jako bajtové.

BINARY_CHECKSUM a CHECKSUM mají podobné funkce. Lze je použít k výpočtu hodnoty kontrolního součtu na seznamu výrazů a pořadí výrazů ovlivňuje výslednou hodnotu. Pořadí sloupců použitých pro BINARY_CHECKSUM(*) je pořadí sloupců specifikované v definici tabulky nebo pohledu. Toto uspořádání zahrnuje i vypočítané sloupce.

BINARY_CHECKSUM a vracejí CHECKSUM různé hodnoty pro datové typy řetězců, kde lokalita může způsobit, že řetězce s různou reprezentací se porovnávají jako stejné. Typy dat řetězců jsou:

  • znak
  • nchar
  • nvarchar
  • varchar
  • sql_variant (pokud je základní typ sql_variant datový typ řetězce)

Například řetězce McCavity a mají Mccavity různé BINARY_CHECKSUM hodnoty. Naopak u serveru bez rozlišení na velká písmena vrací CHECKSUM stejné hodnoty kontrolního součtu pro tyto řetězce. Měli byste se vyhýbat srovnávání CHECKSUM hodnot s hodnotami BINARY_CHECKSUM .

BINARY_CHECKSUMPodporuje libovolnou délku typu varbinary(max) a až 255 znaků typu nvarchar(n) / nvarchar(max).

Examples

Tento příklad slouží BINARY_CHECKSUM k detekci změn v řádku tabulky.

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