declare @newDDH varchar(20)
select @newDDH =(select top 1 right(rTRIM(user_num),4) from user_list where convert(varchar(8),getdate(),12)=left(lTRIM(user_num),6)  order by user_num desc)
if (@newDDH=NULL)
set @newDDH='0001' 
set @newDDH=convert(varchar(6),getdate(),12)+ right(Convert(int,right(@newDDH,4))+10001,4)
select @newDDH读取表中当天有没有用户注册,如果没有的话就从0001开始,如果有的话读取当前表中当天注册用户里 user_num最大的,把后四位转换成数值后加1,上面的加10001是为了把数值变成5位后转换成字符型再截取后四位,然后把当前日期转换为yyyymmdd再拼接上后四位。现在问题是如果当天已经用人注册的话,这段代码没有问题会累加。但如果当天没有人注册的话就出现问题:
select @newDDH  里面是 NULL个人觉得应该是if (@newDDH=NULL)
set @newDDH='0001' 
这两句有些问题,请高手们赐教。

解决方案 »

  1.   

    if (@newDDH=NULL) ==> SQL判斷null 用 is nullif @newDDH is null
      

  2.   


    declare @newDDH varchar(20) 
    select @newDDH =(select top 1 right(rTRIM(user_num),4) from user_list where convert(varchar(8),getdate(),12)=left(lTRIM(user_num),6)  order by user_num desc) 
    --if (@newDDH=NULL) set @newDDH=isnull(@newDDH,'0001') ---用这个试试set @newDDH=convert(varchar(6),getdate(),12)+ right(Convert(int,right(@newDDH,4))+10001,4) 
    select @newDDH