5103005_1_1
5103005_1_20
5103005_1_3
5103005_1_4
5103005_1_5
5103005_1_6
5103005_1_7
5103005_1_8
5103005_1_9
5103005_1_10
5103005_1_11
5103005_1_12
5103005_1_13
如何转换成
5103005_1_001
5103005_1_020
5103005_1_003
5103005_1_004
5103005_1_005
5103005_1_006
5103005_1_007
5103005_1_008
5103005_1_009
5103005_1_010
5103005_1_011
5103005_1_012
5103005_1_013
因为编码位数不一致导致软件前台排序是乱的 请大神指导 非常感谢

解决方案 »

  1.   

    with m as (
    select '5103005_1_20' c from dual 
    union all
    select '5103005_1_1' c from dual 
    )
    select substr(c,1,10) || lpad( substr(c,11,20),3,'0') n  from m 
      

  2.   

    with t1 as (
    select '5103005_1_20' num from dual 
    union all
    select '5103005_1_1' num from dual 
    )
    select substr(num,1,instr(num,'_',1,2))||lpad(regexp_substr(num,'[^_]+',1,3),3,'0') as new_num from t1;