--1, with NEWID ()
Go
--Create a view (because NEWID () cannot be used directly in the function)
CREATE VIEW Vnewid
As
Select NEWID () N ' macoid ';
Go
--Create a function
Create function getrandstr (@n int)
Returns varchar (max)
As
Begin
DECLARE @i int
Set @i=ceiling (@n/32.00)
DECLARE @j int
Set @j=0
DECLARE @k varchar (max)
Set @k= "
While @j<@i
Begin
Select @[email protected]+replace (CAST (macoid as varchar), '-', ') from Vnewid
Set @[email protected]+1
End
Set @k=substring (@k,1,@n)
Return @k
End
--Test example
Select DBO.GETRANDSTR (75)
--Running results
/*
d185504ad09c4d5796f7016983e67414cee25162ea9f43d195d43328a4cf01ac7c586521d8e
*/
We can see that the letters in the results are in uppercase or lowercase.
--In a different way to write:
Go
--Create a function
Create function [dbo]. [M_rand] (@mycount int)
Returns nvarchar (2000)
As
Begin
Declare @maco_wang table (ID varchar (1))
declare @maco_number int, @number int;
declare @my_one nvarchar (max), @my_two nvarchar (max)
Set @my_one = "; set @maco_number = 0; Set @number = 48;
while (@number >=48 and @number <=57) or (@number >=65 and @number <=90) or (@number >=97 and @number <=122)
Begin
INSERT INTO @maco_wang Select char (@number)
Set @[email protected]+1;
if (@number =58)
Begin
Set @number =65
End
if (@number =91)
Begin
Set @number =97
End
End
While @maco_number < @mycount
Begin
Select @my_two =id from @maco_wang
Order BY (select Macoid from Dbo.m_macoview);
Set @[email protected][email protected]_one;
Set @[email protected]_number+1;
End
Return @my_one
End
--Test Cases
SELECT [dbo]. [M_rand] (75)
--Running results
/*
5nn0w4o4vokjacb5so2uvcuw2zrrnbhxei4icseohzbbstkmr1p8ash4n4xaxhdodetkx8bz0cr
*/
Generate N-bit random string