1 2 3 4 5 6 7 8 9 10 11 12 13 14
| WITH t AS (SELECT '1' AS champ FROM dual
UNION ALL SELECT '7' FROM dual
UNION ALL SELECT '10' FROM dual
UNION ALL SELECT '1-A' FROM dual
UNION ALL SELECT '2' FROM dual
UNION ALL SELECT '3-B' FROM dual
UNION ALL SELECT '43' FROM dual
UNION ALL SELECT '3' FROM dual
UNION ALL SELECT 'B' FROM dual)
SELECT champ, TO_NUMBER(SUBSTR(champ, 0, LENGTH(champ) -NVL(LENGTH(LTRIM(champ, '0123456789')),0))) AS num,
SUBSTR(champ, LENGTH(champ) -NVL(LENGTH(LTRIM(champ, '0123456789')),0)+1) AS car
FROM t
ORDER BY TO_NUMBER(SUBSTR(champ, 0, LENGTH(champ) -NVL(LENGTH(LTRIM(champ, '0123456789')),0))),
SUBSTR(champ, LENGTH(champ) -NVL(LENGTH(LTRIM(champ, '0123456789')),0)+1) |
Partager