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语句,你可以参考如下的存储过程,如果还问题请继续讨论。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <code> 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 </code> |
代码如下:
1 2 3 | <code> EXECUTE [dbo].[usp_RandomNumber] 8,10 </code> |
【图片暂缺】
注:关于SQL Server 不重复的随机数的内容就先介绍到这里,更多相关文章的可以留意
代码注释