任何人都可以请解释我下面的查询是什么意思?SQL Server中的校验和示例说明(T-SQL)
我在一些链接中不理解校验和。这让我感到困惑。
SELECT COUNT(DISTINCT CHECKSUM(StudentID, RegistrationDate))
FROM RegistrationSummary
谢谢大家。
任何人都可以请解释我下面的查询是什么意思?SQL Server中的校验和示例说明(T-SQL)
我在一些链接中不理解校验和。这让我感到困惑。
SELECT COUNT(DISTINCT CHECKSUM(StudentID, RegistrationDate))
FROM RegistrationSummary
谢谢大家。
校验和计算来自给定列的整数哈希码。它通常用于检查两个不同表中是否存在相同的值,而不必逐一比较每列的枯燥程度。
因此,您提供的查询是计算表中具有与[StudentID]和[RegistrationDate]不同的值的行数。是功能等同的:
SELECT Count(*) FROM
(
SELECT DISTINCT StudentID, RegistrationDate
FROM RegistrationSummary
)
注意,它始终是可能的两种完全不同的价值观,以最终拥有完全相同的散列码的,所以这不是一个完美的技术。但考虑到校验和的创建方式,这是不太可能的,因此当比较数据为十亿分之一可接受时,这是比较数据的合理方法。
在这种情况下,它只是允许连接2个不相似的数据类型来检查2列的唯一性。
你可以很轻松地将它改写为...
SELECT COUNT(DISTINCT CONCAT(StudentID, RegistrationDate))
FROM RegistrationSummary;
文档有一个更好的解释比我能想出。 https://docs.microsoft.com/en-us/sql/t-sql/functions/checksum-transact-sql –