Ho un problema di ordinamento con oracle 10g. Non sono sicuro se è specifico per 10 g oppure no.Oracle 10g Ordinamento SQL VARCHAR2
Ho la seguente tabella:
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
Esecuzione generico SELECT NAME FROM table_name ORDER BY 1
produce:
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
desidero per ordinare correttamente quando detti profilati hanno numeri superiori 9, in questo modo:
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
Ho molto più voci di numero di questo w con lunghezze diverse e molte sezioni con segmenti di numeri superiori a 10. Stavo cercando di scherzare con regexp_replace() nell'ordine in base alla clausola ma non ho avuto fortuna. Qualsiasi aiuto sarebbe molto apprezzato.
Questo funziona sicuramente. Puoi spiegare cosa sta succedendo? Inoltre questa è una grossa query che impiega molto tempo per generare. È a causa del With/Replace o della concatenazione in ORDER BY? Grazie. –
Per prima cosa rende un xml (non proprio necessario, può essere fatto anche con substr e instr - in realtà ciò può costare in termini di prestazioni). poi prende ogni nodo (una parte tra i punti) e lo riempie di zero per essere di una lunghezza elevata (diciamo 5). ora può essere ordinato –