三位数自动递增编号函数_sql 自动生成编号函数

本文介绍如何在SQL中创建自动编号函数,包括根据日期和类型生成编号。提供了两个示例,一个是简单的三位数递增,另一个是结合日期、类型和自增编号的复杂例子。
摘要由CSDN通过智能技术生成

下面是一个用sql生成自动编号的函数,希望对大家有帮助。。

/**

PoNumber----函数名

pono---- 字段名

po---表名字

**/

create  function PoNumber(@a datetime) returns varchar(50)

begin

declare @id varchar(50),@i int

select top 1 @id=pono from dbo.po where left(pono,8)= convert(varchar(8),@a,112)  order by pono desc

if @@rowcount=0

return convert(varchar(8),@a,112)+'001'

set @i= rtrim(right(@id,3))  +1

set @id=rtrim(@i)

return convert(varchar(8),@a,112)+right( '000'+@id ,3 )

end

效果如下

第二种 根据每天时间,不同类型,编号新的一天从0001开始

如下

Create procedure [dbo].[SP_NumberingRule](

@HeadType nvarchar(50)

)

as

begin

--定义变量

declare @Puid varchar(50) --唯一uid

declare @i int

declare @Big varchar(100) --结尾自增编号 0001

declare @Date VARCHAR(100) --当前时间 八位数日期

declare @Letter varchar(100) --字母开头 DJBH

declare @Centretime varchar(100) --中间时间 20180110

declare @Dudate varchar(100) --赋值时间,使用

DECLARE@Mcount VARCHAR(50)

set @Date = CONVERT(varchar(8) , getdate(), 112 ) --当前时间

---开启事务

BEGIN TRAN

select top 1 @Puid = Uid, @Letter = CharacterFormat,@Dudate=StDatetime , @Big = DigitFormat,@Centretime= StDatetime , @Mcount = Conbination from BasicsManage B where B.name = @HeadType --获取编号规则

begin

--如果当前时间大于表中字段时间

if (@Date> @Dudate)

begin

set @i= rtrim(@Big) +1

set @Big= rtrim(@i) --编号从0000开始递增

set @Mcount = @Letter + @Date + right(REPLICATE('0',4) + rtrim(@Big),4)

UPDATE BasicsManage SET Conbination = @Mcount ,StDatetime = @Date where Uid = @Puid and Name = @HeadType

end

else

begin

print(@Mcount)

set @Big=rtrim(right(@Mcount,4)) +1 --原来基础上自增

set @Mcount = @Letter + @Date + right(REPLICATE('0',4) + rtrim(@Big),4)

UPDATE BasicsManage SET Conbination = @Mcount ,StDatetime = @Date where Uid = @Puid and Name = @HeadType

end

end

begin

commit tran; --执行成功将会添加数据

SELECT @Mcount

end

end

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值