经过了几次的测试终于成功了 declare @Year Int, @Month int, @Day int, @Temp_No varchar(12), @NeedNo varchar(4), @No varchar(20), @Number varchar(50), @RandNo varchar(50), @Nu varchar(10) select @year=Year(GetDate()) select @Month=Month(GetDate()) select @Day=Day(GetDate()) select @No=Str(@Year,4,0)+ (select case when @Month>=10 then Str(@Month,2,0) when @Month<10 Then '0'+Str(@Month,1,0) end)+ (select case when @Day>=10 then Str(@Day,2,0) when @Day<10 Then '0'+Str(@Day,1,0) end)select @Number =Idd from lshselect @Nu=count(*) from lshif @Nu ='0' BEGINselect @No=@No+'0001'ENDelseBEGIN SELECT @RandNo = STR(CONVERT(int,(SUBSTRING(@Number ,9,4))+1),4,0) SELECT @RandNo = REPLACE( @RandNo,' ','0') SELECT @No = @No + @RandNoENDinsert into lsh(Idd) values(@No)select * from lsh