Aracılığıyla paylaş


BINARY_CHECKSUM (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric'te SQL analitiği uç noktasıMicrosoft Fabric'te DepoMicrosoft Fabric'te SQL veritabanı

Bir tablonun bir satırı veya bir ifade listesi üzerinden hesaplanan ikili kontrol toplamı değerini döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Uyarı

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Arguments

*

Hesaplamanın tüm tablo sütunlarını kapsadığını belirtir. BINARY_CHECKSUM hesaplamasında karşılaştırılmayan veri tipli sütunları görmezden gelir. Karşılaştırılmayan veri türleri şunlardır:

  • imleç
  • image
  • ntext
  • text
  • xml
  • Karşılaştırılmayan ortak dil çalışma zamanı (CLR) kullanıcı tanımlı türler

expression

Herhangi bir türde bir ifade . BINARY_CHECKSUM hesaplamasında karşılaştırılmayan veri tiplerinin ifadelerini görmezden gelir.

Dönüş türleri

int

Açıklamalar

BINARY_CHECKSUM(*), bir tablonun herhangi bir satırında hesaplanırsa, satır daha sonra değiştirilmediği sürece aynı değeri verir. BINARY_CHECKSUM bir hash fonksiyonunun özelliklerini sağlar: herhangi iki ifade listesi üzerinde uygulandığında, iki listenin ilgili elemanları aynı tipte ve equals (=) operatörü kullanılarak karşılaştırıldığında eşitse, aynı değeri döndürür.

Bu tanım için, belirli bir türdeki null değerlerin eşit değerler olarak karşılaştırıldığını söyleriz. İfade listesindeki en az bir değer değişirse, ifade kontrol toplamı da değişebilir. Ancak bu değişiklik garanti değildir, bu yüzden değerlerin değişip değişmediğini tespit etmek için sadece uygulamanız ara sıra kaçırılan bir değişikliği tolere edebiliyorsa kullanmalısınız BINARY_CHECKSUM . Aksi takdirde, bunun yerine kullanmayı HASHBYTES düşünün. Belirli bir MD5 hash algoritmasında, iki farklı girdi için aynı sonucu verme olasılığı HASHBYTES çok daha düşüktür BINARY_CHECKSUM.

BINARY_CHECKSUM bir ifade listesi üzerinde çalışabilir ve belirli bir liste için aynı değeri döndürür. BINARY_CHECKSUM herhangi iki ifade listesi üzerinde uygulandığında, iki listenin ilgili elemanları aynı tür ve bayt temsiline sahipse aynı değeri verir. Bu tanım için, belirli bir türdeki null değerler aynı bayt temsiline sahip olarak kabul edilir.

BINARY_CHECKSUM ve CHECKSUM benzer işlevlerdir. Bir ifade listesindeki bir kontrol toplamı değerini hesaplamak için kullanılabilirler ve ifadelerin sırası, ortaya çıkan değeri etkiler. Kullanılan BINARY_CHECKSUM(*) sütunların sırası, tablo veya görünüm tanımında belirtilen sütunların sırasıdır. Bu sıralama hesaplanan sütunları da içerir.

BINARY_CHECKSUM ve CHECKSUM dize veri tipleri için farklı değerler döndürür; burada yerel olarak farklı temsillere sahip diziler eşit olarak karşılaştırılabilir. Dizi veri türleri şunlardır:

  • char
  • nchar
  • nvarchar
  • varchar
  • sql_variant ( eğer sql_variant'in temel tipi bir dizi veri tipi ise)

Örneğin, ve McCavity dizelerinin Mccavity değerleri farklıdırBINARY_CHECKSUM. Buna karşılık, büyük harf duyarsız bir sunucu için, CHECKSUM bu dizilerle aynı kontrol toplamı değerlerini döndürür. Değerlerle CHECKSUM değerleri BINARY_CHECKSUM karşılaştırmaktan kaçınmalısınız.

BINARY_CHECKSUMHerhangi bir uzunlukta varbinary(max) ve 255 karaktere kadar nvarchar(n / )nvarchar(max) tipini destekler.

Örnekler

Bu örnek, bir tablo satırındaki değişiklikleri tespit etmek için kullanılır 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