我正在开发一个保存员工记录的应用程序,我希望做一些类似的事情,当用户注册新员工时,应该在SQL中自动生成员工注册号,即首先注册号码员工应该是ISO-2016-01,第二名员工应该是ISO-2016-02等等。
答案 0 :(得分:1)
如果RegistrationNumber始终采用相同的格式(ISO-2016-xxx),则可以在不创建额外字段的情况下完成
你可以得到这样的最后一个数字:
select top 1 substring(r.RegistrationNumber, 10, len(r.RegistrationNumber))
from Registrations r
where substring (r.RegistrationNumber, 5, 4) = '2016'
order by substring(r.RegistrationNumber, 10, len(r.RegistrationNumber)) desc
假设它始终是ISO-2016-(= 9个字符)
可以用于该函数的完整sql将是这样的:
declare @year varchar(4) = convert(varchar, datepart(year, getdate()))
declare @prefix varchar(9) = 'ISO-' + @year + '-'
declare @number int
declare @result varchar(20)
select top 1
@number = substring(r.RegistrationNumber, 10, len(r.RegistrationNumber))
from Registrations r
where substring (r.RegistrationNumber, 5, 4) = @year
order by substring(r.RegistrationNumber, 10, len(r.RegistrationNumber)) desc
set @number = @number + 1
set @result = @prefix + convert(varchar, @number)
select @result
答案 1 :(得分:0)
可能是这样的吗?
$years18 = intval(date('Y', strtotime('-18 years')));
其中ALTER TABLE dbo.Employes
ADD RegistrationNumber AS CONCAT('ISO-', DATEPART(year, DateReg), '-', Id);
- 具有用户注册日期时间的列的名称,DateReg
- 标识列
答案 2 :(得分:0)
我不能通过SQL Server自动生成 ISO-2016-01 。您必须编写一个函数,每次在向表中添加任何新行之前为您生成此ID。功能将 -
1.检查当前年份
2.为当前年份生成的最后一个ID(您可能希望跟踪给定年份的ID)
3.使用上述数据生成下一个id
希望它有所帮助!