BINARY_CHECKSUM (Transact-SQL)

傳回針對一份資料表的某個資料列或一份運算式清單,來計算的二進位總和檢查碼值。BINARY_CHECKSUM 可用來偵測資料表資料列的變更。

主題連結圖示Transact-SQL 語法慣例

語法

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

引數

  • *
    指定針對資料表的所有資料行來計算。BINARY_CHECKSUM 忽略其計算中無法比較之資料類型的資料行。無法比較的資料類型包括 text、ntext、image、cursor、xml 和無法比較的 Common Language Runtime (CLR) 使用者自訂類型。

  • expression
    這是任何類型的運算式。BINARY_CHECKSUM 忽略其計算中無法比較之資料類型的運算式。

備註

只要後續未修改資料列,對資料表任何資料列執行計算的 BINARY_CHECKSUM(*),會傳回相同值。BINARY_CHECKSUM(*) 對資料列的大部份 (但非全部的) 變更會傳回不同值,並可用來偵測大部份的資料列修改。

BINARY_CHECKSUM 可套用至運算式清單,並傳回指定清單的相同值。如果兩份清單的相對應元素有相同類型和位元組表示法,則套用在任何兩份運算式清單上的 BINARY_CHECKSUM 會傳回相同的值。對這項定義而言,指定類型的 Null 值會被視為具有相同位元組表示法。

BINARY_CHECKSUM 和 CHECKSUM 是相似的函數:它們可用來計算運算式清單的總和檢查碼值,而運算式的順序會影響結果值。用於 BINARY_CHECKSUM(*) 的資料行順序,是資料表或檢視定義所指定之資料行的順序。其中包括計算資料行。

CHECKSUM 和 BINARY_CHECKSUM 傳回字串資料類型的不同值,其中地區設定會造成不同表示法的字串比較之後相等。字串資料類型為 char、varchar、nchar、nvarchar 或 sql_variant (如果 sql_variant 的基底類型是字串資料類型的話)。例如,"McCavity" 和 "Mccavity" 字串的 BINARY_CHECKSUM 值不同。反之,在不區分大小寫的伺服器上,CHECKSUM 對那些字串會傳回相同的總和檢查碼值。CHECKSUM 值不應該與 BINARY_CHECKSUM 值做比較。

範例

下列範例會利用 BINARY_CHECKSUM 來偵測資料表中資料列的變更。

USE AdventureWorks;
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