生成三位隨機字母+12位數字git
declare @CardCode varchar(50),@str varchar(50), @c int; select @CardCode=abs(CHECKSUM(NEWID())) set @c=12-LEN(@CardCode); select @str= FLOOR(rand()*POWER(10,@c)) set @CardCode=@CardCode+@str declare @sql nvarchar(400) ,@name varchar(50) ; select @name= char( cONVERT(NVARCHAR,CONVERT(INT,26*rand())+97) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97) ) select @name+CAST( @CardCode as nvarchar(50))
下面這個是生成大寫字母的sql
declare @sql nvarchar(400) ,@name varchar(50) ; select @name= char( cONVERT(NVARCHAR,CONVERT(INT,26*rand())+65) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+65) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+65) ) select @name
生成隨機字母+數字的存儲過程api
ALTER proc [dbo].[randStr] ( @digitalLen int, --數字長度 @letterLen int, --字母長度 @IsCapital bit --大寫,1=是 ,0=否 ) --RETURNs varchar(100) as begin declare @CardCode varchar(50),@str varchar(50), @c int,@name varchar(50); if(@IsCapital=0) begin select @CardCode=abs(CHECKSUM(NEWID())) if(@digitalLen>LEN(@CardCode)) begin set @c=@digitalLen-LEN(@CardCode); select @str= FLOOR(rand()*POWER(10,@c)) set @CardCode=@CardCode+@str end else begin set @CardCode=left(@CardCode,@digitalLen) end select @name= char( cONVERT(NVARCHAR,CONVERT(INT,26*rand())+97) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+97) ) set @CardCode= @name+CAST( @CardCode as nvarchar(50)) end else begin select @CardCode=abs(CHECKSUM(NEWID())) if(@digitalLen>LEN(@CardCode)) begin set @c=@digitalLen-LEN(@CardCode); select @str= FLOOR(rand()*POWER(10,@c)) set @CardCode=@CardCode+@str end else begin set @CardCode=left(@CardCode,@digitalLen) end select @name= char( cONVERT(NVARCHAR,CONVERT(INT,26*rand())+65) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+65) )+ CHAR( CONVERT(NVARCHAR,CONVERT(INT,rand()*26)+65) ) set @CardCode= @name+CAST( @CardCode as nvarchar(50)) end select @CardCode; end