加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer通过函获取订单编号

发布时间:2020-12-12 13:43:56 所属栏目:MsSql教程 来源:网络整理
导读:SQL获取订单编号go--创建函数create function getoids()--返回一个订单编号returns varchar(20)asbegin--定义一个接订单编号的变量 declare @oid varchar(20) --获取 170623 的日期类型作为原始订单号set @oid = CONVERT(varchar(20),GETDATE(),12)--定义一
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),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),12)
				--print SUBSTRING(@tbo,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读