生成纯字母随机编号的示例(大小写混合).sql

 2023-09-16 阅读 16 评论 0

摘要:--取得随机数的视图CREATE VIEW v_RANDASSELECT re=STUFF(RAND(),1,2,'')GO--生成随机编号的函数CREATE FUNCTION f_RANDBH(@BHLen int)RETURNS varchar(50)ASBEGIN DECLARE @r varchar(50) IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50) SET @BHL
--取得随机数的视图
CREATE VIEW v_RAND
AS
SELECT re=STUFF(RAND(),1,2,'')
GO

--生成随机编号的函数
CREATE FUNCTION f_RANDBH(@BHLen int)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @r varchar(50)
    IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
        SET @BHLen=10

    SELECT @r=CHAR(
            CASE WHEN SUBSTRING(re,1,1)>5 THEN 97 ELSE 65 end
            +(SUBSTRING(re,1,1)
            +SUBSTRING(re,2,1)
            +SUBSTRING(re,3,1))%26)
        +CHAR(
            CASE WHEN SUBSTRING(re,4,1)>5 THEN 97 ELSE 65 end
            +(SUBSTRING(re,4,1)
            +SUBSTRING(re,5,1)
            +SUBSTRING(re,6,1))%26)
    FROM v_RAND
    WHILE LEN(@r)<@BHLen
        SELECT @r=@r+CHAR(
                CASE WHEN SUBSTRING(re,1,1)>5 THEN 97 ELSE 65 end
                +(SUBSTRING(re,1,1)
                +SUBSTRING(re,2,1)
                +SUBSTRING(re,3,1))%26)
            +CHAR(
                CASE WHEN SUBSTRING(re,4,1)>5 THEN 97 ELSE 65 end
                +(SUBSTRING(re,4,1)
                +SUBSTRING(re,5,1)
                +SUBSTRING(re,6,1))%26)
        FROM v_RAND
    RETURN(LEFT(@r,@BHLen))
END
GO

--调用
SELECT dbo.f_RANDBH(6),dbo.f_RANDBH(8)
--结果: YZVBOj   LASCrhSO

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/71049.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息