SQL获取订单编号
go
--创建函数
create function getoids()
--返回一个订单编号
returns varchar(20)
as
begin
--定义一个接订单编号的变量
declare @oid varchar(20)
--获取 170623 的日期类型作为原始订单号
set @oid = CONVERT(varchar(20),GETDATE(),12)
--定义一个变量接收日期类型(有点多余,上课的时候懒得改了就这么写了^>^)
declare @time varchar(20) = CONVERT(varchar(20),GETDATE(),12)
--判断订单表里面是否有数据
if ((select COUNT(*) from getoid)>0)
begin
--获取订单表里面最后一个数据的订单编号
declare @tbo varchar(20)
select top 1 @tbo = oid from getoid order by id desc
--取订单编号里面的后四位(注意订单是TD1706230001)
declare @ibo int
set @ibo = convert(int,substring(@tbo,len(@tbo)-3,len(@tbo)))
--如果订单数大于9999或者是第二天就从新开始计数也就是从 0001开始
if((@ibo>=9999)or (convert(varchar(20),getdate(),12)!= SUBSTRING(@tbo,3,6)))
begin
--print convert(varchar(20),getdate(),12)
--print SUBSTRING(@tbo,3,6)
--这里就是从新开始计算呐 老哥哥们
set @oid ='TB'+@time +'0001'
end
else
begin
--后四位加1
set @ibo +=1
--加1后设置补0操作,为啥要部0 因为0001+1=2这样就无法获取到一个正确的后四位,so 嗯哼
set @oid = case when len(@ibo)=1 then '000'+convert(varchar(1),@ibo)
when len(@ibo)=2 then '00'+convert(varchar(2),@ibo)
when len(@ibo)=3 then '0'+convert(varchar(3),@ibo)
else convert(varchar(4),@ibo)
end
--拼接成想要的订单编号
set @oid = 'TB'+@time+@oid
end
end
else
begin
--如果表里面没有数据就创建0001第一条
set @oid ='TB'+@oid +'0001'
end
return @oid
end
go
SQLServer通过函获取订单编号
最新推荐文章于 2022-02-21 21:04:20 发布