数据库生成连续编号 前几位为零
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。
--得到新编号的函数
CREATEFUNCTION f_NextBH()
RETURNSchar(8)
AS
BEGIN
RETURN(SELECT'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))
END
GO
--在表中应用函数
CREATETABLE tb(
BH char(8) PRIMARYKEYDEFAULT dbo.f_NextBH(),
col int)
--插入资料
BEGINTRAN
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)
COMMITTRAN
--显示结果
SELECT*FROM tb
/*--结果
BH col
---------------- -----------
BH000001 1
BH000002 2
BH000003 4
BH000004 14
--*/
另一种写法;带条件的
CREATE PROCEDURE P_CreateCaseNum
@UnitID int
AS
declare @CaseNum char(10)
BEGIN
if exists(select * from T_CreateCaseNum where UnitID=@UnitID)
begin
update T_CreateCaseNum set CaseNum=right('000000'+ltrim(convert(int,CaseNum)+1),6) where UnitID=@UnitID
set @CaseNum=(select CaseNum from T_CreateCaseNum where UnitID=@UnitID)
select @CaseNum
return
end
else
begin
insert into T_CreateCaseNum(UnitID,CaseNum) values(@UnitID,'000001')
set @CaseNum=(select CaseNum from T_CreateCaseNum where UnitID=@UnitID)
select @CaseNum
return
end
END
GO
ID unitid casenum
1 1 00001
1 2 00004
1 3 00003
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述