sqlserver 不重复的随机数

时间:2024-01-14 00:13:59 

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获得结果会不一样)

sqlserver 不重复的随机数

标签:不重复,随机数
0
投稿

猜你喜欢

  • MySQL如何选择合适的索引

    2024-01-28 05:05:54
  • Vue中使用eslint和editorconfig方式

    2024-06-05 10:03:46
  • win10下安装Go和Goland的详细教程

    2024-02-12 10:57:16
  • Python基于百度API识别并提取图片中文字

    2023-02-06 13:51:25
  • vue通知提醒消息举例详解

    2024-05-10 14:17:03
  • ASP中实现分页显示的七种方法

    2007-09-20 13:19:00
  • python 模拟登陆github的示例

    2022-01-05 17:52:41
  • python随机数分布random测试

    2022-01-05 00:41:17
  • PHP implode()函数用法讲解

    2023-06-19 22:54:34
  • pygame实现弹力球及其变速效果

    2022-12-25 16:23:07
  • 十个节省时间的MySQL命令小结

    2024-01-13 07:18:14
  • JavaScript中对象property的删除方法介绍

    2024-06-05 09:29:09
  • python Matplotlib数据可视化(2):详解三大容器对象与常用设置

    2022-11-23 21:10:41
  • python 读写excel文件操作示例【附源码下载】

    2023-02-20 09:26:31
  • python装饰器property和setter用法

    2023-02-14 09:01:05
  • 解决CentOS下ImportError: No module named '_sqlite3'的问题

    2022-03-14 20:13:57
  • 分析uniapp如何动态获取接口域名

    2024-04-10 13:59:26
  • 在Django中动态地过滤查询集的实现

    2023-06-15 12:20:15
  • HTML文件HEAD内部标签用法浅析

    2008-07-06 20:56:00
  • 浅谈python正则的常用方法 覆盖范围70%以上

    2022-05-18 21:01:13
  • asp之家 网络编程 m.aspxhome.com