У меня есть столбец с буквой, за которой следуют либо цифры, либо буквы:
ID_Col
------
S001
S1001
S090
SV911
SV800
Sfoofo
Szap
Sbart
Как я могу естественным образом заказать его с номерами (AS C), затем буквы по алфавиту? Если он начинается с S
, а остальные символы являются числами, выполните сортировку по номерам. Остальное, сортировка по письму. Таким образом, SV911
должно быть отсортировано в конце по буквам, поскольку оно также содержит V
. Например,
ID_Col
------
S001
S090
S1001
Sbart
Sfoofo
SV800
SV911
Szap
Я вижу, что это решение использует регулярное выражение в сочетании с функцией TO_NUMBER
, но, поскольку у меня также есть записи без чисел, это, похоже, не работает для меня. Я попробовал выражение:
ORDER BY
TO_NUMBER(REGEXP_SUBSTR(ID_Col, '^S\d+$')),
ID_Col
/* gives ORA-01722: invalid number */