我陷入了我必须排序的情况 'a-2.3' 'a-1.1'和 'a-1.02'。 我们如何在spring数据jpa中使用jpql或使用sql查询来做到这一点。非常感谢您的亲身经历和想法。
基于a-之后的数值的升序排序。
答案 0 :(得分:0)
这取决于您使用的数据库,例如在Oracle中,您可以使用SQL调用TO_NUMBER(SUBSTR(col, 3))
:
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)