BINARY_CHECKSUM (Transact-SQL)
テーブルの 1 つの行、または一連の式に対して計算された、バイナリのチェックサム値を返します。BINARY_CHECKSUM は、テーブルの行に変更がないか確認するときに使用できます。
構文
BINARY_CHECKSUM ( * | expression [ ,...n ] )
引数
*
テーブルのすべての列を計算の対象とします。BINARY_CHECKSUM の計算では、比較できないデータ型の列は無視されます。比較できないデータ型には、text、ntext、image、cursor、xml、および比較できない共通言語ランタイム (CLR) のユーザー定義型が含まれます。expression
任意のデータ型の式を指定します。BINARY_CHECKSUM の計算では、比較できないデータ型の式は無視されます。
説明
BINARY_CHECKSUM(*) をテーブルの行に対して実行した場合、行が変更されていなければ同じ値が返されます。BINARY_CHECKSUM(*) では、行が変更されていると、ほとんどの場合は異なる値が返されます (ただし異ならない場合もあります)。異なる値が返される場合は、行に変更があったかどうかを確認できます。
BINARY_CHECKSUM は式のリストに適用でき、指定したリストに対しては同じ値が返されます。BINARY_CHECKSUM を 2 つの式のリストに適用した場合、2 つのリストの対応する要素が同じ型と同じバイト表現であれば、同じ値が返されます。この定義では、指定した型の値が NULL であった場合、これらの値は同じバイト表現として扱われます。
BINARY_CHECKSUM と CHECKSUM は類似した関数で、どちらも式のリストに対するチェックサム値の計算に使用でき、式の順序が結果の値に影響します。BINARY_CHECKSUM(*) で使用される列の順序は、テーブルまたはビュー定義で指定された列の順序です。これには計算列も含まれます。
ロケールによっては、異なる表現の文字列が同じものと判断される場合があります。このような場合、CHECKSUM と BINARY_CHECKSUM では文字列型に対して異なる値が返されます。文字列型は、char、varchar、nchar、nvarchar、および sql_variant (sql_variant の基本データ型が文字列型の場合) です。たとえば、文字列 "McCavity" と "Mccavity" の BINARY_CHECKSUM 値は異なります。これに対し、大文字小文字が区別されないサーバーの場合、CHECKSUM では 2 つの文字列に同じチェックサム値が返されます。CHECKSUM 値を BINARY_CHECKSUM 値と比較しないでください。
例
次の例では、BINARY_CHECKSUM を使用して、テーブルの行に変更がないかどうかを確認します。
USE AdventureWorks2008R2;
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