【发布时间】:2014-04-26 12:33:42
【问题描述】:
我需要创建一个给定长度的随机数字字符串
CREATE FUNCTION UniqConvert
(@calue as varchar(max),
@len as int)
输出的长度应为@len
并且每个输入应该是唯一的@value
我已经问过类似的问题: Create random string of digits T-SQL 这个有不同的概念
【问题讨论】:
-
问题似乎很困惑。听起来您想要散列输入,但也有可变长度的输出。你确定吗?如果输出长度比普通散列短,你会增加冲突的机会。如果大于普通散列,您将一无所获,并且可能难以使用散列。
-
我遇到的问题是 varchar 输入和“唯一性”的“len”规定。想象一下你依次通过'A'..'Z'并要求len = 1。有明显的碰撞。您可能知道自己需要什么,但从不这样做。你的问题没有说明这一点,我认为它应该。我知道这是一个愚蠢的例子,但它表明了我想要表达的观点。
-
您是否考虑过使用“加密”哈希函数之一?我知道它们很贵,但乍一看,似乎可以满足您的大部分需求。实际上,我猜是因为我不知道您的“用例”。
标签: sql-server tsql hashbytes