想每次 插入一条数据的时候 ,对这条记录 进行一个固定长度 6位的随机数字,并且在表内没有重复出现

解决方案 »

  1.   


    DECLARE @RANDID INT 
    SET @RANDID = 0 
    WHILE LEN(@RANDID)<>6 
    BEGIN 
    SET @RANDID = CONVERT ( INT, SUBSTRING( CONVERT( CHAR(20) , RAND()) , 3, 6 ) ) 
    END 
    PRINT @RANDID
      

  2.   

    --用这个吧。
    Select  ABS(CHECKSUM(NEWID())+100000) % (999999)
    要保证绝对不重复的话,可能要加约束或者触发器了。用这个相对比较随机。
      

  3.   


    --还不知道弄,那我也帮不了你啦
    DECLARE @RANDID INT,@count int
    SET @RANDID = 0  
    SET @count = 0 
    WHILE LEN(@RANDID)<>6  
    BEGIN 
    --检查表中是否存在
    SET @RANDID = CONVERT ( INT, SUBSTRING( CONVERT( CHAR(20) , RAND()) , 3, 6 ) ) 
    select @count = count(*) from a where id = @RANDID
    if (@count > 0) --存在这继续循环,直到@count = 0,则插入
    SET @RANDID =SUBSTRING( CONVERT(CHAR(20),@RANDID),1,5)
    END 
    PRINT @RANDID
    --insert into a(id) values (@RANDID)
    --PRINT @count
    --print SUBSTRING(CONVERT(CHAR(20),@RANDID),1,5)
      

  4.   

    你说得对,应该是这样子。上面绝对值加错位置了。
    Select  ABS(CHECKSUM(NEWID()))% 99999 +100000
      

  5.   


    select abs(checksum(newid()))%1000000
      

  6.   


    Select  ABS(CHECKSUM(NEWID()))% 99999 + left(left(convert(varchar(20),REVERSE(RANd())),1)+ 1,1) * 100000