Вы можете разделить номер версии на отдельные номера и упорядочить их следующим образом:
order by
to_number(regexp_substr(productversion, '\d+', 1, 1)),
to_number(regexp_substr(productversion, '\d+', 1, 2)),
to_number(regexp_substr(productversion, '\d+', 1, 3))
Если ваши номера версий могут состоять более чем из 3 частей, вы можете расширить предложение order by
еще больше to_number()
выражения.
Демонстрация на DB Fiddle :
with t as (
select '1.0' productversion from dual
union all select '1.10' from dual
union all select '10.5.2' from dual
union all select '16' from dual
union all select '2.0.0' from dual
)
select *
from t
order by
to_number(regexp_substr(productversion, '\d+', 1, 1)),
to_number(regexp_substr(productversion, '\d+', 1, 2)),
to_number(regexp_substr(productversion, '\d+', 1, 3))
| PRODUCTVERSION |
| :------------- |
| 1.0 |
| 1.10 |
| 2.0.0 |
| 10.5.2 |
| 16 |