Mam problem z sortowaniem z Oracle 10g. Nie jestem pewien, czy to jest specyficzne dla 10g czy nie.Oracle Sortowanie SQL 10g VARCHAR2
mam poniższej tabeli:
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
wykonaniem generic SELECT NAME FROM table_name ORDER BY 1
produkuje:
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
chciałbym go rozwiązać poprawnie, gdy te odcinki mają numery większe niż 9, tak jak poniżej:
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
Mam znacznie więcej wpisów liczbowych niż to - o różnych długościach i wielu sekcjach o numerach większych niż 10. Próbowałem zadziwić się z regexp_replace() w kolejności klauzuli, ale nie miałem szczęścia. Każda pomoc będzie wielce ceniona.
To zdecydowanie działa. Czy możesz wyjaśnić, co się dzieje? Również to jest mocne zapytanie, które zabiera dużo czasu na wygenerowanie. Czy to z powodu opcji Z/Zamień, czy konkatenacji w ZAMÓWIENIU? Dziękuję Ci. –
Po pierwsze powoduje, że jest to xml (niezbyt potrzebny, można to zrobić również z substr i instr - w rzeczywistości może to kosztować wydajność). następnie bierze każdy węzeł (część między kropkami) i nakłada na niego zera na dużą długość (powiedzmy 5). teraz można go sortować –