日期:2014-05-17  浏览次数:20715 次

varchar数字章节号排序
在Oracle数据库字段的类型是varchar2
字段下保存的内容是数字章节类型:
1
1.1
1.1.1
2
2.1
我现在要根据这个排序,直接order by后:
1
1.1
1.10 --------这行排序不对1.1.1

我知道,如果另外再加一个排序字段可以就行了, 但是我现在的情况下是不能再加字段了,只能用这个varchar2类型排序。
大神们,有好的解决办法么? 

------解决方案--------------------
额我有个建议 用游标,把章节字段通过.进行分解成三段 在order by 不知道可行不
------解决方案--------------------
 ORDER BY to_number(REGEXP_SUBSTR(字段, '[[:alnum:]]+', 1, 1)) NULLS FIRST,
          to_number(REGEXP_SUBSTR(字段, '[[:alnum:]]+', 1, 2)) NULLS FIRST,
          to_number(REGEXP_SUBSTR(字段, '[[:alnum:]]+', 1, 3)) NULLS FIRST