日期:2014-05-17  浏览次数:20389 次

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

------解决方案--------------------

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

------解决方案--------------------
引用:
--用这个吧。
Select  ABS(CHECKSUM(NEWID())+100000) % (999999)

要保证绝对不重复的话,可能要加约束或者触发器了。用这个相对比较随机。

很确定的告诉您,觉得不符合要求,至少不是每次都是6位数字
如图:


------解决方案--------------------

--还不知道弄,那我也帮不了你啦
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)

------解决方案--------------------

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