Deposit_number
--------------
D100000
D99999
D50
.....
D4
D3
D2
D1
我正在尝试通过使用以下JPA查询存款来获取记录
Deposit findTopByCompanyOrderByDepositNumberDesc(Company company);
但是结果是我得到包含'D99999'
的记录,并且我期望是'D100000'。如果有人有想法解决此问题,请提供帮助。我想使用JPA查询而不是使用SQL本机查询来解决此问题。
答案 0 :(得分:1)
问题是您的Deposit_number
列是文本,但是您希望数字按数字而不是文本排序。假设D
是一个常量前缀,并且整个列中只有非数字字符,我们可以尝试以下MySQL查询:
SELECT *
FROM yourTable
ORDER BY CAST(SUBSTRING(Deposit_number, 2) AS SIGNED) DESC;
此查询看起来很难看吗?是的,的确如此,但是再次,您存储存款号码的方式也很丑陋。如果您不想使用上述查询,请考虑将存款编号存储在单独的列中。