3 回答

TA贡献1887条经验 获得超5个赞
select round(round(rand(),4)*10000);
不用函数直接这样就好了。
非得写函数的话,就
DELIMITER $$
CREATE
FUNCTION get_rand()
RETURNS INT DETERMINISTIC
BEGIN
DECLARE return_no INT;
SELECT ROUND(ROUND(RAND(),4)*10000) INTO return_no;
RETURN return_no;
END$$
DELIMITER ;

TA贡献1789条经验 获得超10个赞
我写了一个SQL2005的
create proc suijishu
@weishu int,@hangshu int
as
declare @temp table
(
id int identity(1,1),
zhi varchar(10)
)
declare @js int
declare @zhi varchar(10)
declare @i varchar(10)
declare @j int
set @j=0
while 1=1
begin
--唯一的随机数插入表@temp
set @zhi=''
while 1=1
begin
set @i =''
set @j=round(rand()*10,0)
--如果是10就置为0
if @j>=10
set @j=0
set @i=rtrim(convert(varchar(10),@j))
set @zhi=@zhi+@i
if len(rtrim( @zhi))>=@weishu
break
end
--判断是否唯一
if not exists(select * from @temp where zhi=@zhi)
insert @temp values(@zhi)
select @js=count(*) from @temp
if @js>=@hangshu
break
end
select * from @temp
例如:产生5个不重复的7位随机数
exec suijishu 7,5
传两个参数,
第一个参数:每个随机数的位数
第二个参数:产生随机数的个数
结果:
id zhi
1 9049637
2 0788233
3 7486321
4 5466539
5 2484970
添加回答
举报