通过一个函数或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.

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值