• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sqlserver 不重复的随机数
    POST TIME:2021-10-18 18:48
    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中随机函数NewID()和Rand()
    • MySQL的指定范围随机数函数rand()的使用技巧
    • mysql生成指定位数的随机数及批量生成随机数的方法
    • SQLServer 使用rand获取随机数的操作
    上一篇:SQLServer Execpt和not in 性能区别
    下一篇:在sql Server自定义一个用户定义星期函数
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信