就是如Y2007020201 就是字母Y+八位的年月日+两位累加编码,论坛里有一些帖子,因本人sql水平太差,一时难以理解,请多多指教。谢谢!!!

解决方案 »

  1.   


    select 'Y'+convert(char(8), getdate(), 112)+'01'--result
    ----------- 
    Y2007020301(1 row(s) affected)
      

  2.   

    create table T(NO varchar(20))
    go
    create function fun(@dt datetime)
    returns varchar(20)
    as
    begin
    declare @NO varchar(50)
    select @NO=NO from T where NO like 'Y'+convert(char(8), @dt, 112)+'%'
    if @NO is null
    set @NO='Y'+convert(char(8), @dt, 112)+'01'
    else
    set @NO=left(@NO, 9)+right('00'+rtrim( (right(@NO, 2)+1) ), 2) return @NO
    endinsert T
    select dbo.fun(getdate())select * from T--result
    NO                   
    -------------------- 
    Y2007020301
    Y2007020302
    Y2007020303(3 row(s) affected)
      

  3.   

    declare @intnum int 
    declare @randnum varchar(20)
    set @intnum= rand()*100000
    set @randnum=cast(@intnum as varchar)
    set @randnum='Y'+convert(char(8), getdate(), 112)+@randnum
    select @randnum