通过一个函数或sql语句,随机生成任意6个字母组成的字符

来源:互联网 发布:php获取访客qq号码 编辑:程序博客网 时间:2024/05/22 11:49

1.

declare   @sql   nvarchar(400)
select     @sql= 'select   char( '+cONVERT(NVARCHAR,CONVERT(INT,26*rand())+97)+ ')+
CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+
CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+
CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+
CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ')+
CHAR( '+CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97)+ ') '
print   @sql
EXEC(@sql)

=====================================================

2.

declare   @str   varchar(10)
set   @str   =   ' '
select   @str   =   @str   +   chr   from  
(select   top   6   chr   from   (
select   'a '   as   chr   union   all
select   'b '   union   all
select   'c '   union   all
select   'd '   union   all
select   'e '   union   all
select   'f '   union   all
select   'g '   union   all
select   'h '   union   all
select   'i '   union   all
select   'j '   union   all
select   'k '   union   all
select   'l '   union   all
select   'm '   union   all
select   'n '   union   all
select   'o '   union   all
select   'p '   union   all
select   'q '   union   all
select   'r '   union   all
select   's '   union   all
select   't '   union   all
select   'u '   union   all
select   'v '   union   all
select   'w '   union   all
select   'x '   union   all
select   'y '   union   all
select   'z '  
)   as   a   ORDER   BY   NEWID())   as   t

----查看
select   @str

==========================================

3.

DECLARE   @myid   varchar(1000)
SET   @myid   =   NEWID()
select   CONVERT(varchar(6),   @myid)

==========================================

4.

DECLARE   @Below   int
DECLARE   @Up   int
SELECT   @Below=65,@Up=90
SELECT   CHAR(CAST(RAND()*(@Up-@Below)+@Below   AS   decimal(38,0)))
+CHAR(CAST(RAND()*(@Up-@Below)+@Below   AS   decimal(38,0)))
+CHAR(CAST(RAND()*(@Up-@Below)+@Below   AS   decimal(38,0)))
+CHAR(CAST(RAND()*(@Up-@Below)+@Below   AS   decimal(38,0)))
+CHAR(CAST(RAND()*(@Up-@Below)+@Below   AS   decimal(38,0)))
+CHAR(CAST(RAND()*(@Up-@Below)+@Below   AS   decimal(38,0)))

==========================================

5.

CREATE   VIEW   V_RAND   AS   SELECT   RAND1   =   CONVERT(INT,RAND()*26),RAND2   =   RAND()*2      
GO      


CREATE   FUNCTION   DBO.f_GetRandNum(@LEN   INT,@FLAG   INT)
RETURNS   NVARCHAR(100)
AS
--@LEN   输出字符的长度
--@FLAG   返回值包含字符   1:大写字母     2:小写字母     3:大小写字母混合
BEGIN
    DECLARE   @SQL   NVARCHAR(100),@RAND   INT
    SELECT   @SQL   =   ' '
    IF   @LEN   >   100
        SET   @LEN   =   100

    WHILE   @LEN   >   0  
    BEGIN
        SELECT   @RAND   =   RAND1   +   (CASE   @FLAG   WHEN   1   THEN   65   WHEN   2   THEN   97
            ELSE   (CASE   WHEN   RAND2   >   1   THEN   97   ELSE   65   END)   END)
        FROM   V_RAND

        SELECT   @SQL   =   @SQL   +   CHAR(@RAND),@LEN   =   @LEN   -   1
    END

    RETURN   @SQL
END
GO

SELECT   DBO.f_GetRandNum(7,3)

原创粉丝点击