1.利用newid()產(chǎn)生的uniqueidentifier都是隨機且唯一的:
declare @string nvarchar(100);
set @string =cast(newid() as nvarchar(100));
select @string;
go
2.利用rand()生成隨機數(shù)字串:
declare @string nvarchar(100);
set @string = right(str(rand(),8,6),2);
select @string;
go
3.利用rand()生成6位隨機字符串:
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)
go
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)))
go
SELECT CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+
CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+
CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+
CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+
CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))+
CHAR(CONVERT(INT,rand()*26)+(CASE WHEN RAND()*2 > 1 THEN 97 ELSE 65 END))
go
4.編寫可以產(chǎn)生隨機字符串的存儲過程:
--*********************
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
--調(diào)用存儲過程
SELECT DBO.f_GetRandNum(7,2)
(收集自:CSDN社區(qū))