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 觉得这样用不爽,就自己封装一个函数。。
select substr(max(a),1,1)||(substr(max(a),2)+1) from A
select substr(a,1,1)|| (substr(a,2,substr(a.length-1))+1) from A where rownum=1 order by a desc
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
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
觉得这样用不爽,就自己封装一个函数。。
select substr(a,1,1)|| (substr(a,2,substr(a.length-1))+1)
from A
where rownum=1
order by a desc
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