編號欄位以字母和數字組成,並且數字可以自動增長

2021-06-01 13:09:50 字數 2265 閱讀 6684

下面的**生成長度為8的編號,編號以bh開頭,其餘6位為流水號。並且保證流水號的連續性

--得到新編號的函式

create function f_nextbh()

returns char(8)

asbegin

return(select 'bh'+right(1000001+isnull(right(max(bh),6),0),6) from tb with(xlock,paglock))

endgo

--在表中應用函式

create table tb(

bh char(8) primary key default dbo.f_nextbh(),

col int)

--插入資料

begin tran

insert tb(col) values(1)

insert tb(col) values(2)

insert tb(col) values(3)

delete tb where col=3

insert tb(col) values(4)

insert tb(bh,col) values(dbo.f_nextbh(),14)

commit tran

--顯示結果

select * from tb

/*--結果

bh col 

---------------- ----------- 

bh000001 1

bh000002 2

bh000003 4

bh000004 14

--*/

--另一種方法

--種子表 num_tb 

if object_id('num_tb') is not null

drop table num_tb

gocreate table num_tb(d datetime,id int)

insert num_tb select getdate(),1 

if object_id('tb') is not null

drop table tb

gocreate table tb(id varchar(20),name varchar(10)) 

create clustered index idx_clu_tb on tb(id) 

go create trigger tri_tb on tb instead of insert 

as begin 

set nocount on 

declare @i int,@id varchar(20),@j int 

select @i=count(*) from inserted 

begin tran 

update num_tb with(tablockx) set 

id=(case when convert(char(8),d,112)=convert(char(8),getdate(),112) 

then id+@i else @i end), 

@j=(case when convert(char(8),d,112)=convert(char(8),getdate(),112) then id else 0 end), 

d=getdate() 

commit tran 

select * into #t from inserted 

update #t set id=convert(varchar(8),getdate(),112)+right('00000'+rtrim(@j),5),@j=@j+1 

insert tb select * from #t 

end 

go --插入記錄測試 

insert into tb(name) values('張三') 

insert into tb(name) values('李四') 

select * from tb

/*id name

-------------------- ----------

2010012700002 張三

2010012700003 李四

*/insert into tb select '2010012700003','王五'

/*id name

-------------------- ----------

2010012700002 張三

2010012700003 李四

2010012700004 王五

*/

java正則校驗,密碼必須由字母和數字組成

2011 年 12 月 14 日 filed under 正規表示式 and tagged with 密碼,正規表示式 零寬斷言 乙個使用者註冊功能的密碼有如下要求 由數字和字母組成,並且要同時含有數字和字母,且長度要在8 16位之間。如何分析需求?拆分!這就是軟體設計的一般思路了。於是乎,拆分需求...

java正則校驗,密碼必須由字母和數字組成

2011 年 12 月 14 日 filed under 正規表示式 and tagged with 密碼 正規表示式 零寬斷言 乙個使用者註冊功能的密碼有如下要求 由數字和字母組成,並且要同時含有數字和字母,且長度要在8 16位之間。如何分析需求?拆分!這就是軟體設計的一般思路了。於是乎,拆分需求...

字母和數字轉換

字母和數字之間的轉換利用ascii進行轉換 a 97 int a 或者a 0 97 a char 97 1的ascii為49 1 1 char 1 的ascii 字母轉數字,int 字母 數字轉字母 char 數字 該數字 對應字母的ascii include include include usi...