自动编号
我想实现的就像是自动编号identity那样.但identity是以全数字的.
我要实现的是OR070717001
OR是固定不变的,070717是根据取当天日期除去了开头的20,001是根据当天的订单数据来判断的.001表示,每天第一个订单从001开始
create table tba(OrderID varchar(50),b int)
----------------------------------
CREATE function new_idw(@a datetime) returns varchar(50)
begin
declare @id varchar(50),@i int
select top 1 @id=OrderID from tba where left(OrderID,8)='SR'+convert(varchar(6),@a,12) order by OrderID desc
if @@rowcount=0
return 'SR'+convert(varchar(6),@a,12)+'001'
set @i= rtrim(right(@id,3)) +1
set @id=rtrim(@i)
return 'SR'+convert(varchar(6),@a,12)+right( '000'+@id ,3 )
end
------------------------------------------
insert tba select dbo.new_idw(getdate()),1
insert tba select dbo.new_idw(getdate()),2
insert tba select dbo.new_idw(getdate()+1),3
insert tba select dbo.new_idw(getdate()+1),3
select * from tba
我要实现的是OR070717001
OR是固定不变的,070717是根据取当天日期除去了开头的20,001是根据当天的订单数据来判断的.001表示,每天第一个订单从001开始
create table tba(OrderID varchar(50),b int)
----------------------------------
CREATE function new_idw(@a datetime) returns varchar(50)
begin
declare @id varchar(50),@i int
select top 1 @id=OrderID from tba where left(OrderID,8)='SR'+convert(varchar(6),@a,12) order by OrderID desc
if @@rowcount=0
return 'SR'+convert(varchar(6),@a,12)+'001'
set @i= rtrim(right(@id,3)) +1
set @id=rtrim(@i)
return 'SR'+convert(varchar(6),@a,12)+right( '000'+@id ,3 )
end
------------------------------------------
insert tba select dbo.new_idw(getdate()),1
insert tba select dbo.new_idw(getdate()),2
insert tba select dbo.new_idw(getdate()+1),3
insert tba select dbo.new_idw(getdate()+1),3
select * from tba
浙公网安备 33010602011771号