2017-08-02 27 views
0

任何人都可以請解釋我下面的查詢是什麼意思?SQL Server中的校驗和示例說明(T-SQL)

我在一些鏈接中不理解校驗和。這讓我感到困惑。

SELECT COUNT(DISTINCT CHECKSUM(StudentID, RegistrationDate)) 
FROM RegistrationSummary 

謝謝大家。

+2

文檔有一個更好的解釋比我能想出。 https://docs.microsoft.com/en-us/sql/t-sql/functions/checksum-transact-sql –

回答

1

校驗和計算來自給定列的整數哈希碼。它通常用於檢查兩個不同表中是否存在相同的值,而不必逐一比較每列的枯燥程度。

因此,您提供的查詢是計算表中具有與[StudentID]和[RegistrationDate]不同的值的行數。是功能等同的:

SELECT Count(*) FROM 
(
    SELECT DISTINCT StudentID, RegistrationDate 
     FROM RegistrationSummary 
) 

注意,它始終是可能的兩種完全不同的價值觀,以最終擁有完全相同的散列碼的,所以這不是一個完美的技術。但考慮到校驗和的創建方式,這是不太可能的,因此當比較數據爲十億分之一可接受時,這是比較數據的合理方法。

0

在這種情況下,它只是允許連接2個不相似的數據類型來檢查2列的唯一性。

你可以很輕鬆地將它改寫爲...

SELECT COUNT(DISTINCT CONCAT(StudentID, RegistrationDate)) 
FROM RegistrationSummary;