select isnull(cast(max(zbhao)+1 as varchar(100)),'040329001') from tgzbs where zbhao like '040327%'

解决方案 »

  1.   

    select isnull(right('000000000'+cast(max(zbhao)+1 as varchar),9),'040329001') from tgzbs where zbhao like '040327%'
      

  2.   

    select isnull(cast(max(zbhao)+1 as varchar),'040329001') from tgzbs where zbhao like '040327%'
      

  3.   

    刚才给分出现:贴子回复次数大于跟给分次数提示,我等一会在给你们分,我觉得邹大侠的有点麻烦,我觉得中海先生的就符合我的要求,只是我要把varchar(100) 改成varchar(9)就可以了
      

  4.   

    --谁对谁错,一测试就知道了.--测试
    declare @t table(zbhao varchar(9))
    insert @t select '040329001'
    union all select '040327001'
    union all select null--中海的
    select isnull(cast(max(zbhao)+1 as varchar(100)),'040329001') 
    from @t where zbhao like '040327%'--我的
    select isnull(right('000000000'+cast(max(zbhao)+1 as varchar),9),'040329001') 
    from @t where zbhao like '040327%'/*--测试结果-----------------------------
    40327002(所影响的行数为 1 行)                   
    ------------------ 
    040327002(所影响的行数为 1 行)
    --*/
      

  5.   

    select right('000000000'+cast(40329001 as varchar),9)--结果:040329001
      

  6.   

    我是说还是上边的isnull函数的问题,也就是说如果是空,后边的值不是040329001,而是40329001,然后得出的结果是040329001
      

  7.   

    --谁对谁错,一测试就知道了.--测试
    declare @t table(zbhao varchar(9))
    insert @t select '040329001'
    --union all select '040327001'
    union all select null--中海的
    select isnull(cast(max(zbhao)+1 as varchar(100)),'040329001') 
    from @t where zbhao like '040327%'--我的
    select isnull(right('000000000'+cast(max(zbhao)+1 as varchar),9),'040329001') 
    from @t where zbhao like '040327%'/*--测试结果-------------------------
    040329001(所影响的行数为 1 行)                   
    ------------------ 
    040329001(所影响的行数为 1 行)
    --*/