运行结果:
该语句只能生成最长32位(但只有0~9,a~f共16种字符)的字符串,如果需要更长的字符,可以使用 concat 函数连接多个字符串,如下所示:
这个语句可以生成长度为42个字符的字符串。
运行结果:
因为 uuid() 函数返回的字符串中会包含特殊字符 "-" , 所以我们需要通过 replace 函数将这个特殊字符全部替换掉。这种方式会得到一个32位的字符串,如果有长度要求,可以用substring或concat函数裁剪或拼接。
运行结果:
至于字符集需要你自己定义,我这里随便写了点字符public static String getRandomString(int length) { //length表示生成字符串的长度
String base = "abcdefghijklmnopqrstuvwxyz0123456789"
Random random = new Random()
StringBuffer sb = new StringBuffer()
for (int i = 0i <lengthi++) {
int number = random.nextInt(base.length())
sb.append(base.charAt(number))
}
return sb.toString()
}
1.利用newid()产生的uniqueidentifier都是随机且唯一的:declare @string nvarchar(100)set @string =cast(newid() as nvarchar(100))select @stringgo2.利用rand()生成随机数字串:declare @string nvarchar(100)set @string = right(str(rand(),8,6),2)select @stringgo3.利用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) goDECLARE @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))) goSELECT 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)) go4.编写可以产生随机字符串的存储过程:--*********************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,2) (收集自:CSDN社区)欢迎分享,转载请注明来源:内存溢出
评论列表(0条)