使用SQL Server时具有20个字符限制的唯一HAHID



代码有20个字符的限制,但它必须是唯一的。为了使其独一无二,有3个部分,这些值的组合将超过20个字符的限制,更像是40-50个大小。因此,我们的想法是基于该字符串生成某种类型的唯一ID,但不超过20个字符。

我正在探索SQL ServerHashbytes函数的可能用途,该函数将所有内容放入哈希中并使其更小(下面的示例(。

然而,所有旧的16位/32位散列函数都已被微软退役,而更准确的新函数将有大约30-40个字符。这违背了目的。

有什么想法吗?

只是一个想法。。。

打开选项是将hashbytes()转换为bigint

示例

Declare @Table table (Col1 varchar(25),Col2 varchar(25),Col3 int)
Insert into @Table values
('V5H 3K3','AAA',25),
('V6L 4L4','VVV',16),
('V4E 5L2','CCC',25),
('V5H 3K3','AAA',27)
Select *
,UniID = left(abs(convert(bigint,HashBytes('MD5', concat(col1,col2,col3)))),20)
From  @Table

结果

Col1        Col2    Col3    UniID
V5H 3K3     AAA     25      8561734070678522554
V6L 4L4     VVV     16      2225152452607129855
V4E 5L2     CCC     25      5842957356638096832
V5H 3K3     AAA     27      1688308399631225138

最新更新