SQL Server 不重复的随机数

2022-11-12 09:48:19
内容摘要
这篇文章主要为大家详细介绍了SQL Server 不重复的随机数,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记!MSSQL随机数MSSQL有一个函数CHAR
文章正文

这篇文章主要为大家详细介绍了SQL Server 不重复的随机数,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

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 <= @Rows 
BEGIN 
DECLARE @RN varchar(MAX) = '' 
WHILE @L <= @Len --随机产生每个随数的位数 
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获得结果会不一样)

【图片暂缺】

注:关于SQL Server 不重复的随机数的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!