关于生成 随机数字 我用的是 select RIGHT('0000000000'+RTRIM(ABS(CAST(checksum(newid()) AS BIGINT))),8)
要严谨的说是不是总还是会重复的?数据量特别大的时候
帮忙写出一条sql语句,我是用asp调用的。第一步 得到 8位随机数字,第二步在表中判断是否已有,有则重新随机生成 。循环
即要在表中插入唯一的8位随机数字,注意是不插入。生成成功则 输出8位数字,如果循环100次还是有重复则 则输出-1
还有更好的办法吗?谢谢

解决方案 »

  1.   

    CREATE TABLE TB1(NUM int)
    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
      

  2.   


    DECLARE  @M  INT,@N  INT 
    SET   @N=10000000
    SET   @M=99999999
    SELECT CAST((RAND()*(@M-@N)+@N) AS INT)
      

  3.   

    楼主可以尝试用下RAND(),肯定不会重复的。
      

  4.   

    请改为 asp可以调用的啊,谢谢