数据库里面有:
oracle123
oracle2
oracle45
oracle9
这些字符串,我想取出最大的那条 oracle123,但是用max选出的是oracle9,求助

解决方案 »

  1.   


    select max(to_number(replace(val, 'oracle', ''))) maxval from t;
      

  2.   


    select  'oracle'||max(to_number(replace(val, 'oracle', ''))) maxval from t;
      

  3.   

    如果都是以“oracle”+数字,用这种方法是没有问题的
      

  4.   

    SELECT SubStr(id,1,6)||Max(To_Number(SubStr(id,7,Length(id)))) FROM test GROUP BY SubStr(id,1,6);
      

  5.   


    前缀都是'oracle' 这条就满足你的条件了!!!
      

  6.   

    select substr(val,1,6)||max(to_number(substr(val,7,length(val)-6))) from t group by substr(val,1,6);
      

  7.   


    针对这题有2中提取方法:    替换非数字   regexp_replace(c1,'[^0-9]+',''))  
        直接提取数字 REGEXP_SUBSTR(c1,'[0-9]+')
      

  8.   

    with t as 
    (select 'oracle123' name from dual
    union all
    select 'oracle2' name from dual
    union all
    select 'oracle45' name from dual
    union all
    select 'oracle9' name from dual)
    select * from (select  t.name from t order by to_number(regexp_substr(t.name,'\d+')) desc) where rownum=1;