各位高手:  现有一个员工信息表,包括字段ID(设为主键,自动加1).emp_code(员工编号)员工编号需要采用连续编号,其连续性如下:
id    emp_code
1     0702010001
2     0702010002
3     0702010003
5     0702010004
6     0702010005
7     0702010006
10    0702010007
因为ID可能产生一些空号,如上所示,但emp_code我不能让其断号.
请问各位高手,如何产生新的号码进行存储.
谢谢了

解决方案 »

  1.   

    MAX(CONVERT(INT,RIGHT(emp_code, 4)))
      

  2.   

    select right('000000000'+cast(cast(max(emp_code) as int)+1 as varchar(9)),9) from tb
      

  3.   

    用函数,在插入语句中直接调用下面的函数,或者将下面的部分代码直接放在存储过程、触发器中
    create function newcode(@date datetime) returns varchar(10)
    begin
      declare @code varchar(10)
      select top 1 @code=emp_code from 表 order by id desc
      if @@rowcount=0
         return convert(varchar(6),@date,12)+'0001' 
      return convert(varchar(6),@date,12)+right('0000'+cast(cast(right(@code,4) as int)+1 as varchar),4)
    end
      
    select dbo.newcode(getdate())