Это будет зависеть от базы данных, которую вы используете, но, например, в Oracle вы могли бы вызвать TO_NUMBER(SUBSTR(col, 3))
с помощью SQL:
WITH t (col) AS (
SELECT 'a-2.3' FROM dual UNION ALL
SELECT 'a-1.1' FROM dual UNION ALL
SELECT 'a-1.02' FROM dual
)
SELECT col
FROM t
ORDER BY to_number(substr(col, 3))
Это дает:
a-1.02
a-1.1
a-2.3
Конечно, вам придется адаптировать синтаксический анализ, если ваш префикс не всегда точно a-
, но что-то динамическое.
В JPQL это может быть осуществимо: CAST(SUBSTRING(col, 3, LENGTH(col) - 2) AS NUMBER)