Bagikan melalui


BINARY_CHECKSUM (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticstitik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Mengembalikan nilai checksum biner yang dihitung di atas baris tabel atau di atas daftar ekspresi.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

*
Menentukan bahwa komputasi mencakup semua kolom tabel. BINARY_CHECKSUM mengabaikan kolom jenis data yang tidak dapat dikomputasi dalam komputasinya. Jenis data yang tidak dapat dikompresi termasuk

  • Kursor
  • gambar
  • ntext
  • text
  • xml

dan jenis yang ditentukan pengguna runtime bahasa umum (CLR) yang tidak dapat dibandingkan.

expression
Ekspresi jenis apa pun. BINARY_CHECKSUM mengabaikan ekspresi jenis data yang tidak dapat dikomputasi dalam komputasinya.

Jenis Kembalian

int

Keterangan

BINARY_CHECKSUM(*), dihitung pada baris tabel apa pun, mengembalikan nilai yang sama selama baris tidak dimodifikasi nanti. BINARY_CHECKSUM memenuhi properti fungsi hash: saat diterapkan di atas dua daftar ekspresi apa pun, mengembalikan nilai yang sama jika elemen yang sesuai dari dua daftar memiliki jenis yang sama dan sama jika dibandingkan menggunakan operator sama dengan (=). Untuk definisi ini, kami mengatakan bahwa nilai null, dari jenis tertentu, bandingkan sebagai nilai yang sama. Jika setidaknya salah satu nilai dalam daftar ekspresi berubah, checksum ekspresi juga dapat berubah. Namun, perubahan ini tidak dijamin, dan untuk mendeteksi apakah nilai telah berubah, sebaiknya gunakan BINARY_CHECKSUM hanya jika aplikasi Anda dapat mentolerir perubahan yang terlewatkan sesekali. Jika tidak, pertimbangkan untuk menggunakan HASHBYTES sebagai gantinya. Dengan algoritma hash MD5 tertentu, probabilitas yang HASHBYTES akan mengembalikan hasil yang sama, untuk dua input yang berbeda, jauh lebih rendah daripada BINARY_CHECKSUM.

BINARY_CHECKSUM dapat beroperasi melalui daftar ekspresi, dan mengembalikan nilai yang sama untuk daftar yang ditentukan. BINARY_CHECKSUM diterapkan di atas dua daftar ekspresi mengembalikan nilai yang sama jika elemen yang sesuai dari dua daftar memiliki jenis dan representasi byte yang sama. Untuk definisi ini, nilai null dari jenis tertentu dianggap memiliki representasi byte yang sama.

BINARY_CHECKSUM dan CHECKSUM merupakan fungsi serupa. Mereka dapat digunakan untuk menghitung nilai checksum pada daftar ekspresi, dan urutan ekspresi memengaruhi nilai yang dihasilkan. Urutan kolom yang digunakan untuk BINARY_CHECKSUM(*) adalah urutan kolom yang ditentukan dalam tabel atau definisi tampilan. Pengurutan ini mencakup kolom komputasi.

BINARY_CHECKSUM dan CHECKSUM mengembalikan nilai yang berbeda untuk jenis data string, di mana lokal dapat menyebabkan string dengan representasi yang berbeda untuk dibandingkan sebagai sama. Jenis data string adalah

  • Char
  • nchar
  • nvarchar
  • varchar

atau

  • sql_variant (jika jenis dasar sql_variant adalah jenis data string).

Misalnya, string "McCavity" dan "Mccavity" memiliki nilai yang berbeda BINARY_CHECKSUM . Sebaliknya, untuk server yang tidak peka huruf besar/kecil, CHECKSUM mengembalikan nilai checksum yang sama untuk string tersebut. Anda harus menghindari perbandingan CHECKSUM nilai dengan BINARY_CHECKSUM nilai.

BINARY_CHECKSUM mendukung panjang jenis varbinary(maks) dan hingga 255 karakter jenis nvarchar(max).

Contoh

Contoh ini digunakan BINARY_CHECKSUM untuk mendeteksi perubahan dalam baris tabel.

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  

Baca juga

Fungsi Agregat (T-SQL)
CHECKSUM_AGG (T-SQL)
CHECKSUM (T-SQL)
HASHBYTE (Transact-SQL)