BINARY_CHECKSUM (T-SQL)
Berlaku untuk: Titik akhir analitik SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Mengembalikan nilai checksum biner yang dihitung di atas baris tabel atau di atas daftar ekspresi.
Sintaksis
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Catatan
Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
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
or
- 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
Lihat juga
Fungsi Agregat (T-SQL)
CHECKSUM_AGG (T-SQL)
CHECKSUM (T-SQL)
HASHBYTE (Transact-SQL)