Megosztás a következőn keresztül:


BINARY_CHECKSUM (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Adja vissza a bináris ellenőrző összeget, amelyet egy tábla során vagy kifejezéslistán keresztül számoltak ki.

Transact-SQL szintaxis konvenciók

Szemantika

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

Megjegyzés:

Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Arguments

*

Megadja, hogy a számítás lefedi az összes táblázatoszlopot. BINARY_CHECKSUM figyelmen kívül hagyja a nem összehasonlítható adattípusok oszlopait a számítás során. Nem összehasonlítható adattípusok a következők:

  • kurzor
  • image
  • kontextus
  • text
  • xml
  • nem összehasonlítható közös nyelvi futás idejű (CLR) felhasználó által definiált típusok

kifejezés

Bármilyen típusú kifejezés . BINARY_CHECKSUM figyelmen kívül hagyja a nem összehasonlítható adattípusok kifejezéseit a számítás során.

Visszatérési típusok

int

Megjegyzések

BINARY_CHECKSUM(*), bármely táblázat során kiszámítva, ugyanazt az értéket adja, amíg a sor később nem változik. BINARY_CHECKSUM kielégíti egy hash függvény tulajdonságait: ha bármely két kifejezéslistára alkalmazzák, ugyanazt az értéket adja vissza, ha a két lista megfelelő elemei azonos típusúak, és egyenértékűek, ha az egyenlő (=) operátorral összehasonlítják.

Ebben a definícióban azt mondjuk, hogy a meghatározott típusú nullértékek egyenlő értékekként hasonlíthatók össze. Ha legalább az egyik érték megváltozik az expressziátlistában, az expresszíció ellenőrzőösszege is változhat. Ez a változás azonban nem garantált, ezért az értékek változásának felismeréséhez csak akkor kell használni BINARY_CHECKSUM , ha az alkalmazásod elviseli az alkalmi kihagyott változtatást. Ellenkező esetben fontold meg a használatot HASHBYTES . Egy meghatározott MD5 hash algoritmus esetén annak valószínűsége, hogy HASHBYTES két különböző bemenet esetén ugyanazt az eredményt adja vissza, sokkal alacsonyabb, mint BINARY_CHECKSUM.

BINARY_CHECKSUM képes egy kifejezéslistán működni, és ugyanazt az értéket adja vissza egy meghatározott listára. BINARY_CHECKSUM bármely két kifejezéslistára alkalmazva ugyanazt az értéket adjuk, ha a két lista megfelelő elemei azonos típusú és bájtreprezentációval rendelkeznek. Ebben a definícióban a meghatározott típusú null értékeket ugyanúgy tekintjük, mint a bájtreprezentáció.

BINARY_CHECKSUM és CHECKSUM hasonló funkciók. Használhatók egy ellenőrző összeg érték kiszámítására egy kifejezéslistán, és a kifejezések sorrendje befolyásolja az eredményt kapott értéket. Az oszlopok sorrendje BINARY_CHECKSUM(*) a táblázatban vagy nézet definíciójában meghatározott oszlopok sorrendje. Ez a sorrend tartalmazza a számított oszlopokat is.

BINARY_CHECKSUM és CHECKSUM eltérő értékeket adnak vissza a string adattípusok esetén, ahol a helyi szint miatt a különböző reprezentációjú stringek egyenlőként hasonlíthatók össze. A string adattípusok a következők:

  • karakteres
  • nchar
  • nvarchar
  • varchar
  • sql_variant (ha sql_variant alaptípusa egy string adattípus)

Például a és McCavity stringek Mccavity eltérő BINARY_CHECKSUM értékűek. Ezzel szemben egy kis- és nagybetűérzékeny szerver CHECKSUM ugyanazokat az ellenőrző összegösszegeket adja vissza ezekre a stringekre. Kerüld az értékek és CHECKSUM értékek BINARY_CHECKSUM összehasonlítását.

BINARY_CHECKSUM Támogat bármilyen hosszúságú varbinary(max) típust, valamint akár 255 karaktert is támogatja a nvarchar(n) / nvarchar(max) típust.

Példák

Ez a példa a tábla sorában lévő változások észlelésére szolgál 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