最好的方法是什么?
我需要生成一个5位数字长的字符串,其中所有字符都是数字。但是,我需要能够执行“ x”次(用户变量)并将此随机字符串存储在数据库中。此外,我不能两次生成相同的字符串。6个月后,旧弦将被移除。
伪码
DECLARE @intIterator INT, @intMax SET @intIterator = 1 SET @intMax = 5 (number of strings to generate) WHILE @intIterator <= @intMax BEGIN -- GENERATE RANDOM STRING OF 5 NUMERIC DIGITS ??? -- INSERT INTO DB IF DOESN'T ALREADY EXIST INSERT INTO TSTRINGS SELECT @RANDOMSTRING IF @@ERROR = 0 SET @intIterator = @intIterator + 1 END
我知道这可能不是最佳方法,因此请多多指教。但是,真正在寻找有关如何生成数字5长度字符串的想法。
一体。如果您已经有(100000-@intMax)行仅剩下@intMax排列,则应该找到@intMax剩余值
INSERT TOP (@intMax) MyTable (RndColumn) SELECT RndValue FROM ( SELECT DISTINCT TOP 100000 -- covers potential range from 00000 to 99999 RIGHT('00000' + CAST(ABS(CHECKSUM(NEWID())) AS varchar(10)), 5) AS RndValue FROM sys.columns c1, sys.columns c2 ) foo WHERE NOT EXISTS (SELECT * FROM MyTable T WHERE T.RndColumn = foo.RndValue