下面的**生成長度為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...