有一个A表,有个a 字段,是varchar2的,H20100505001,H20100505002,H20100505003.....是它的值。我用 select max(a) from A,能搜索出H20100505003。现在我想搜索出A表a值最大再加1的值。我应该怎么写?在线等。谢谢。

解决方案 »

  1.   


    SELECT substr(u,1,1)||(substr(u,2,length(u))+1) maxval FROM(
      select max(a) u from A
    );千万必要在MAX内部去截串,那样是每行都要去转,因为我发现你是每行都是定长所以,在MAX基础上,最后处理一条数据即可。。写个截取字符串的方法即可。因为我没有你的表格,所以测试方式修改了一下,我直接内部只强制返回一条:H20100505003,外部转换,不过SQL应当用上面的,下面只是数据测试而已SQL> SELECT substr(u,1,1)||(substr(u,2,length(u))+1) maxval FROM(
      2    select 'H20100505003' u from dual
      3  );MAXVAL
    ------------
    H20100505004
    觉得这样用不爽,就自己封装一个函数。。
      

  2.   

    select substr(max(a),1,1)||(substr(max(a),2)+1) from A
      

  3.   


    select substr(a,1,1)|| (substr(a,2,substr(a.length-1))+1) 
    from A 
    where rownum=1 
    order by a desc 
      

  4.   


    select substr(max(a),1,1)||(substr(max(a),2,length(max(a))-1)+1) from a  1* select 'H'||(substr('H20100505003',2,length('H20100505003'))+1) from dual
    SQL> /'H'||(SUBSTR
    ------------
    H20100505004