SQLServer通过函获取订单编号


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

阅读更多
换一批

没有更多推荐了,返回首页