我想使用MS SQL函数。项目编号应该是 默认情况下自动生成,前两位是当前年份的最后两位数字,然后是“ - ”,最后三位数字是基于年份的序列号。
例如16-000然后接下来将是16-001,但是当2017年到来时它将再次改变17-000并继续。
答案 0 :(得分:0)
这是我的成就,需要进行某种修改,因为它会抛出异常“将varchar值'16 -001'转换为数据类型int时转换失败。”当这部分正在执行时。 设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - '+ RIGHT(@ pId,3)+1
我的功能完整代码。
创建函数NextProjectNumber()
返回char(6)
如
开始
声明@pId varchar(50),@ pYear int,@ serial varchar(3),@curYYar int
SELECT @pId =来自[JobPortalDb]的ProjectId。[dbo]。[Projects]其中ProjectId =(从[JobPortalDb]中选择max(ProjectId)。[dbo]。[Projects])
设置@currYear =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))
--SELECT @ pId,@ year
如果@pId IS为NULL,则设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - 001' 否则设置@pYear = SUBSTRING(@ pId,1,2)
如果@pYear = @currYear 设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - '+ RIGHT(@ pId,3)+1
如果@currYear> @pYear 设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - 001'
返回@pId 结束