mssql有一个函数char()是将int(0-255) ascii代码转换为字符。那我们可以使用下面ms sql语句,可以随机生成小写、大写字母,特殊字符和数字
mssql随机数
mssql有一个函数char()是将int(0-255) ascii代码转换为字符。那我们可以使用下面ms sql语句,可以随机生成小写、大写字母,特殊字符和数字。
大写字母:
char(round(rand() * 25 + 65,0))
小写字母:
char(round(rand() * 25 + 97,0))
特殊字符:
char(round(rand() * 13 + 33,0))
数字:
char(round(rand() * 9 + 48,0))
刚才有位网友在skype问及如上问题。
好的,insus.net也正想写一个存储过程来应用上面这篇的sql语句,你可以参考如下的存储过程,如果还问题请继续讨论。
代码如下:
usp_randomnumber
create procedure [dbo].[usp_randomnumber]
(
@len int = 1, --随机数位数
@rows int = 1 --随机笔数
)
as
begin
declare @t as table([random number] varchar(max))
declare @l int = 1, @r int = 1
while @r begin
declare @rn varchar(max) = ''
while @l begin
set @rn = @rn + char(round(rand() * 9 + 48,0))
set @l = @l + 1
end
--如果产生相同的随机数,将不会存储
if not exists(select [random number] from @t where [random number] = @rn)
begin
insert into @t select @rn --insert into @t ([random number])values (@rn)
set @r = @r + 1 --记录总共产生了几笔随机数
set @l = 1 -- 每产生完一个随机数之后,将随机数的位数初始化为1
end
end
select [random number] from @t
end
当你把上面的存储过程附加入数据库之后,可以执行这个存储过程:
代码如下:
execute [dbo].[usp_randomnumber] 8,10
得到的结果(由于是随机产生,每次execute获得结果会不一样)