我遇到了oracle 10g的排序問題。不知道它是否特定於10g。Oracle 10g SQL排序VARCHAR2
我有如下表:
ID NAME
1 A.1
2 A.3
3 A.4
4 A.5
5 A.2
6 A.5.1
7 A.5.2
8 A.5.10
9 A.5.10.1
10 A.5.3
執行通用SELECT NAME FROM table_name ORDER BY 1
生產:
A.1
A.2
A.3
A.4
A.5
A.5.1
A.5.10
A.5.10.1
A.5.2
A.5.3
我想它正確排序,當這些板塊有一個數字大於9,像這樣:
A.1
A.2
A.3
A.4
A.5
A.5.1
A.5.2
A.5.3
A.5.10
A.5.10.1
我有更多的數字條目比這個w不同的長度和很多部分的數字段大於10.我試圖在order by子句中使用regexp_replace(),但沒有運氣。任何幫助將不勝感激。
這絕對有效。你能解釋發生了什麼嗎?而且這是一個需要花費大量時間才能生成的龐大查詢。那是因爲With/Replace還是ORDER BY中的連接?謝謝。 –
首先它使它成爲一個xml(不是真的需要,可以用substr和instr來完成 - 實際上這可能會降低性能)。那麼它需要每個節點(點之間的一個部分)並用零填充長度較高(比如說5)。現在可以排序 –