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获得结果会不一样)
标签:不重复,随机数


猜你喜欢
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
