BINARY_CHECKSUM (Transact-SQL)
傳回針對一份資料表的某個資料列或一份運算式清單,來計算的二進位總和檢查碼值。 BINARY_CHECKSUM 可用來偵測資料表資料列的變更。
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure 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 AdventureWorks2012;
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