Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Database Azure
SQLInstans
Terkelola Azure SQLAzure Synapse Analytics
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL 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 tipe data yang tidak sebanding dalam perhitungannya. Jenis data yang tidak sebanding meliputi:
- Kursor
- gambar
- ntext
- text
- xml
- Jenis runtime bahasa umum (CLR) yang ditentukan pengguna yang tidak sebanding
expression
Ekspresi jenis apa pun.
BINARY_CHECKSUM mengabaikan ekspresi tipe data yang tidak sebanding dalam komputasinya.
Tipe pengembalian
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: ketika diterapkan pada dua daftar ekspresi, itu mengembalikan nilai yang sama jika elemen yang sesuai dari dua daftar memiliki jenis yang sama dan sama jika dibandingkan menggunakan operator sama= ().
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, sehingga untuk mendeteksi apakah nilai telah berubah, Anda harus menggunakan BINARY_CHECKSUM hanya jika aplikasi Anda dapat mentolerir perubahan yang terlewat sesekali. Jika tidak, pertimbangkan untuk menggunakan HASHBYTES sebagai gantinya. Dengan algoritma hash MD5 yang ditentukan, probabilitas yang HASHBYTES 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
- sql_variant (jika jenis dasar sql_variant adalah tipe 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 semua panjang jenis varbinary(max), dan hingga 255 karakter tipe nvarchar(n) / 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