代碼有 20 個字符的限制,但它必須是唯一的。為了使其獨一無二,這些值的 3 個部分組合將超過 20 個字符的限制,更像是 40 - 50 大小。所以想法是根據該字串生成某種型別的唯一 ID,但不超過 20 個字符。
我正在探索 SQL ServerHashbytes函式的可能用途,該函式將所有內容放入散列并使其更小(下面的示例)。
但是,所有舊的 16 位/32 位哈希函式都已被 Microsoft 淘汰,而更新的更準確的哈希函式將有大約 30 到 40 個字符。這違背了目的。
有任何想法嗎?
uj5u.com熱心網友回復:
只是一個想法...
On 選項是將 轉換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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448925.html
上一篇:SQL逗號分隔值比較
下一篇:獲取同一行上3列之間的MIN值
