BINARY_CHECKSUM(Transact-SQL)
테이블 행이나 식 목록에 대해 계산한 이진 체크섬 값을 반환합니다. 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은 두 목록의 해당 요소가 유형 및 바이트 표현에서 동일할 경우 같은 값을 반환합니다. 이러한 정의에서 지정된 유형의 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