流水号生成–数字+字母详解数据库

--建测试表 
create table tzs(x varchar(10)) 
 
--建存储过程 
create proc add_tzs 
as 
begin 
 set nocount on 
 declare @mx varchar(10),@i int,@j1 char(1),@j2 char(1) 
 select @mx=max(x) from tzs 
  
 if @mx is null 
 begin 
   insert into tzs(x) values('0000001') 
   return 
 end 
 else 
 begin 
   select @i=2,@mx='0'+substring(@mx,patindex('%[^0]%',@mx),8-patindex('%[^0]%',@mx)) 
   select @mx=reverse(@mx) 
    
   select @j1=substring(@mx,1,1) 
   select @j2=case when (@j1>='0' and @j1<='8') or (@j1>='a' and @j1<='y') then char(ascii(@j1)+1) 
                   when @j1='9' then 'a' 
                   when @j1='z' then '0' end 
   select @mx=stuff(@mx,1,1,@j2) 
    
   while(@i<=len(@mx)) 
   begin 
     if @j1='z' 
     begin 
      select @j1=substring(@mx,@i,1) 
      select @j2=case when (@j1>='0' and @j1<='8') or (@j1>='a' and @j1<='y') then char(ascii(@j1)+1) 
                     when @j1='9' then 'a' 
                     when @j1='z' then '0' end 
      select @mx=stuff(@mx,@i,1,@j2) 
     end 
     select @[email protected]+1 
   end 
    
   select @mx=replicate('0',7-len(@mx))+reverse(@mx) 
   insert into tzs(x) values(@mx) 
   return 
 end 
end 
 
 
--测试产生200个编号 
exec add_tzs 
go 200 
 
--结果 
select x from tzs 
 
/* 
x 
---------- 
0000001 
0000002 
0000003 
0000004 
0000005 
0000006 
0000007 
0000008 
0000009 
000000a 
000000b 
000000c 
000000d 
000000e 
000000f 
000000g 
000000h 
000000i 
000000j 
000000k 
000000l 
000000m 
000000n 
000000o 
000000p 
000000q 
000000r 
000000s 
000000t 
000000u 
000000v 
000000w 
000000x 
000000y 
000000z 
0000010 
0000011 
0000012 
0000013 
0000014 
0000015 
0000016 
0000017 
0000018 
0000019 
000001a 
000001b 
000001c 
000001d 
000001e 
000001f 
000001g 
000001h 
000001i 
000001j 
000001k 
000001l 
000001m 
000001n 
000001o 
000001p 
000001q 
000001r 
000001s 
000001t 
000001u 
000001v 
000001w 
000001x 
000001y 
000001z 
0000020 
0000021 
0000022 
0000023 
0000024 
0000025 
0000026 
0000027 
0000028 
0000029 
000002a 
000002b 
000002c 
000002d 
000002e 
000002f 
000002g 
000002h 
000002i 
000002j 
000002k 
000002l 
000002m 
000002n 
000002o 
000002p 
000002q 
000002r 
000002s 
000002t 
000002u 
000002v 
000002w 
000002x 
000002y 
000002z 
0000030 
0000031 
0000032 
0000033 
0000034 
0000035 
0000036 
0000037 
0000038 
0000039 
000003a 
000003b 
000003c 
000003d 
000003e 
000003f 
000003g 
000003h 
000003i 
000003j 
000003k 
000003l 
000003m 
000003n 
000003o 
000003p 
000003q 
000003r 
000003s 
000003t 
000003u 
000003v 
000003w 
000003x 
000003y 
000003z 
0000040 
0000041 
0000042 
0000043 
0000044 
0000045 
0000046 
0000047 
0000048 
0000049 
000004a 
000004b 
000004c 
000004d 
000004e 
000004f 
000004g 
000004h 
000004i 
000004j 
000004k 
000004l 
000004m 
000004n 
000004o 
000004p 
000004q 
000004r 
000004s 
000004t 
000004u 
000004v 
000004w 
000004x 
000004y 
000004z 
0000050 
0000051 
0000052 
0000053 
0000054 
0000055 
0000056 
0000057 
0000058 
0000059 
000005a 
000005b 
000005c 
000005d 
000005e 
000005f 
000005g 
000005h 
000005i 
000005j 
000005k 
 
(200 row(s) affected) 
*/ 

  

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/database/4012.html

(0)
上一篇 2021年7月16日 18:27
下一篇 2021年7月16日 18:27

相关推荐

发表回复

登录后才能评论