关于生成 随机数字 我用的是 select RIGHT('0000000000'+RTRIM(ABS(CAST(checksum(newid()) AS BIGINT))),8)
要严谨的说是不是总还是会重复的?数据量特别大的时候
帮忙写出一条sql语句,我是用asp调用的。第一步 得到 8位随机数字,第二步在表中判断是否已有,有则重新随机生成 。循环
即要在表中插入唯一的8位随机数字,注意是不插入。生成成功则 输出8位数字,如果循环100次还是有重复则 则输出-1
还有更好的办法吗?谢谢
要严谨的说是不是总还是会重复的?数据量特别大的时候
帮忙写出一条sql语句,我是用asp调用的。第一步 得到 8位随机数字,第二步在表中判断是否已有,有则重新随机生成 。循环
即要在表中插入唯一的8位随机数字,注意是不插入。生成成功则 输出8位数字,如果循环100次还是有重复则 则输出-1
还有更好的办法吗?谢谢
insert tb1
SELECT 10000000 union all
SELECT 10000001DECLARE @TIMES int,@OUTPUT int
SELECT @TIMES=100WHILE(@TIMES>0)
BEGIN
SELECT @OUTPUT=FLOOR(rand()*100000000)
IF NOT EXISTS(SELECT 1 FROM TB1 WHERE @OUTPUT=NUM)
BEGIN
PRINT @OUTPUT
BREAK
END
ELSE
BEGIN
SET @TIMES=@TIMES-1
END
END IF @TIMES=0
PRINT -1
DECLARE @M INT,@N INT
SET @N=10000000
SET @M=99999999
SELECT CAST((RAND()*(@M-@N)+@N) AS INT)