现有一表t,其中一列名为Name,内容为:
铅笔1
铅笔7
铅笔9
铅笔2
铅笔3
铅笔4
铅笔10
铅笔11
铅笔12
现以Name来排序,只能实现
铅笔1
铅笔10
铅笔11
铅笔12
铅笔2
铅笔3
铅笔4
铅笔7
铅笔9请问如何排序才能实现
铅笔1
铅笔2
铅笔3
铅笔4
铅笔7
铅笔9
铅笔10
铅笔11
铅笔12谢谢

解决方案 »

  1.   

    select name from c  order by   to_number(substr(name,3))
      

  2.   


    select name from t  order by  substr(name,0,2),to_number(substr(name,3))
      

  3.   


    通过sql来直接做处理,不是一个好的选择,能否考虑六楼的方案,或者新加一个order的字段对顺序来进行控制。
      

  4.   

    用正则查找数字select name from c  order by  regexp_substr(name,'[0-9]*[0-9]',1)
      

  5.   

    sorry,少写了点东西select name from c  order by  to_number(regexp_substr(name,'[0-9]*[0-9]',1))
      

  6.   

    select name from c  order by  to_number(regexp_substr(name,'[0-9]+'))
      

  7.   

    select name from c  order by  regexp_substr(name,'[^0-9]+'),to_number(regexp_substr(name,'[0-9]+'))
    这样比较好,先按铅笔/橡皮..排,再按序号排