允许将 hashbytes 输出转换为整数吗?

Conversion of hashbytes output to integer allowed?

我有一些代码如下:

CAST(HASHBYTES('MD5', 'some long string with up to 256 characters') AS int)
CAST(HASHBYTES('SHA2_256', 'some very very long string...') AS int)

这样做是为了生成一个唯一的 int 值,稍后该 int 值用作查找键(或连接中的外键)。所以我对为什么这样做的最好猜测是使连接更快并且能够生成索引(而不是 运行 到那里的 900 字节限制)。

但我不确定上面的输出在转换为 int 时是否会产生更多的冲突。

我的理解是不可能将 MD5 哈希甚至 SHA-256 哈希表示为 int 值...

代码最初是在SQL-Server 2008上开发的。我目前使用SQL-Server 2014。

当然会产生更多的碰撞。 int 只有 4 个字节(32 位),而 MD5 生成 20(160 位)和 SHA2_256 32(256 位)。更少的位意味着更少的唯一值,所以更多的冲突。

从技术上讲,允许的...