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

方法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
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) 
快乐渡过每一天,减肥坚持每一天