Tengo un problema de ordenación con Oracle 10g. No estoy seguro de si es específico para 10g o no.Oracle 10g SQL Sorting VARCHAR2
Tengo la siguiente tabla:
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
Realización de la genérica 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
me gustaría que para ordenar correctamente cuando esas secciones tienen números mayores que 9, así:
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
Tengo más entradas de número que esta w con diferentes longitudes y muchas secciones con un número de segmentos mayor que 10. Estaba tratando de jugar con regexp_replace() en la cláusula order by pero no he tenido suerte. Cualquier ayuda sería muy apreciada.
Eso definitivamente funciona. ¿Puedes explicar lo que está sucediendo? También esa es una consulta considerable que lleva mucho tiempo generar. ¿Es eso debido a With/Replace o la concatenación en ORDER BY? Gracias. –
Primero lo convierte en un xml (no es realmente necesario, se puede hacer con substr e instr también, en realidad esto puede costar en rendimiento). luego toma cada nodo (una parte entre puntos) y lo rellena con ceros para que tenga una gran longitud (digamos 5). ahora se puede ordenar –