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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |