BINARY_CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

テーブルの 1 つの行、または一連の式に対して計算された、バイナリのチェックサム値を返します。Returns the binary checksum value computed over a row of a table or over a list of expressions.

記事リンク アイコン Transact-SQL 構文表記規則Article link icon Transact-SQL Syntax Conventions

構文Syntax

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

注意

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。This syntax is not supported by serverless SQL pool in Azure Synapse Analytics.

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

*
計算がすべてのテーブルの列に対して行われることを指定します。Specifies that the computation covers all the table columns. BINARY_CHECKSUM の計算では、比較できないデータ型の列は無視されます。BINARY_CHECKSUM ignores columns of noncomparable data types in its computation. 比較できないデータ型は次のとおりです。Noncomparable data types include

  • cursorcursor
  • imageimage
  • ntextntext
  • texttext
  • xmlxml

および比較できない共通言語ランタイム (CLR) ユーザー定義型です。and noncomparable common language runtime (CLR) user-defined types.

式 (expression)expression
任意のデータ型のAn expression of any type. BINARY_CHECKSUM の計算では、比較できないデータ型の式は無視されます。BINARY_CHECKSUM ignores expressions of noncomparable data types in its computation.

戻り値の型Return Types

intint

解説Remarks

テーブルの任意の行で計算される BINARY_CHECKSUM(*) では、行が後で変更されていない限り、同じ値が返されます。BINARY_CHECKSUM(*), computed on any row of a table, returns the same value as long the row isn't modified later. BINARY_CHECKSUM はハッシュ関数のプロパティに対応します。2 つの式のリストに適用した場合、2 つのリストの対応する要素のデータ型が同じであり、等号 (=) 演算子による比較で等価であれば、同じ値が返されます。BINARY_CHECKSUM satisfies the properties of a hash function: when applied over any two lists of expressions, returns the same value if the corresponding elements of the two lists have the same type and are equal when compared using the equals (=) operator. この定義では、指定した型が NULL 値であるとすると、等しい値として比較されます。For this definition, we say that null values, of a specified type, compare as equal values. 式リストのいずれかの値を変更した場合は、その式のチェックサムも変わります。If at least one of the values in the expression list changes, the expression checksum can also change. ただし、この変更は保証されていないため、値が変更されたかどうかを検出するには、アプリケーションが変更を検出できないことを許容できる場合のみ、BINARY_CHECKSUM の使用をお勧めします。However, this change isn't guaranteed, and so to detect whether values have changed, we recommend use of BINARY_CHECKSUM only if your application can tolerate an occasional missed change. それ以外の場合は、代わりに HASHBYTES の使用を検討してください。Otherwise, consider using HASHBYTES instead. MD5 ハッシュ アルゴリズムを指定した場合は、HASHBYTES から 2 つの異なる入力に対して同じ結果が返される可能性が BINARY_CHECKSUM よりもはるかに低くなります。With a specified MD5 hash algorithm, the probability that HASHBYTES will return the same result, for two different inputs, is much lower than BINARY_CHECKSUM.

BINARY_CHECKSUM は式のリスト全体を処理でき、指定されたリストに対して同じ値を返します。BINARY_CHECKSUM can operate over a list of expressions, and it returns the same value for a specified list. BINARY_CHECKSUM を 2 つの式のリストに適用した場合、2 つのリストの対応する要素が同じ型と同じバイト表現であれば、同じ値が返されます。BINARY_CHECKSUM applied over any two lists of expressions returns the same value if the corresponding elements of the two lists have the same type and byte representation. この定義では、指定した型の値が NULL であった場合、これらの値は同じバイト表現として扱われます。For this definition, null values of a specified type are considered to have the same byte representation.

BINARY_CHECKSUMCHECKSUM は類似する関数です。BINARY_CHECKSUM and CHECKSUM are similar functions. 式のリストにあるチェックサム値を計算するために使用でき、式の順序は結果となる値に影響します。They can be used to compute a checksum value on a list of expressions, and the order of expressions affects the resultant value. BINARY_CHECKSUM(*) で使用される列の順序は、テーブルまたはビュー定義に指定された列の順序です。The order of columns used for BINARY_CHECKSUM(*) is the order of columns specified in the table or view definition. この順序には、計算列が含まれます。This ordering includes computed columns.

ロケールによっては、異なる表現の文字列が等しいとして比較される場合があります。このような場合、BINARY_CHECKSUMCHECKSUM では文字列データ型に対して異なる値が返されます。BINARY_CHECKSUM and CHECKSUM return different values for the string data types, where locale can cause strings with different representation to compare as equal. 文字列データ型は次のとおりです。The string data types are

  • charchar
  • ncharnchar
  • nvarcharnvarchar
  • varcharvarchar

oror

  • sql_variant (sql_variant の基本データ型が文字列データ型の場合)。sql_variant (if the base type of sql_variant is a string data type).

たとえば、文字列 "McCavity" と "Mccavity" の BINARY_CHECKSUM 値は異なります。For example, the strings "McCavity" and "Mccavity" have different BINARY_CHECKSUM values. これに対し、大文字小文字が区別されないサーバーの場合、CHECKSUM ではこれらの文字列に同じチェックサム値が返されます。In contrast, for a case-insensitive server, CHECKSUM returns the same checksum values for those strings. CHECKSUM 値と BINARY_CHECKSUM 値の比較は避ける必要があります。You should avoid comparison of CHECKSUM values with BINARY_CHECKSUM values.

BINARY_CHECKSUM では、任意の長さの varbinary(max) 型の文字と、最大 255 文字の nvarchar(max) 型がサポートされます。BINARY_CHECKSUM supports any length of type varbinary(max) and up to 255 characters of type nvarchar(max).

Examples

この例では、BINARY_CHECKSUM を使用して、テーブル行の変更を検出します。This example uses BINARY_CHECKSUM to detect changes in a table row.

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  

関連項目See also

集計関数 (Transact-SQL)Aggregate Functions (Transact-SQL)
CHECKSUM_AGG (Transact-SQL)CHECKSUM_AGG (Transact-SQL)
CHECKSUM (Transact-SQL)CHECKSUM (Transact-SQL)
HASHBYTES (Transact-SQL)HASHBYTES (Transact-SQL)