获取的最大值不超过';D99999';在MySQL中,从varchar列

获取的最大值不超过';D99999';在MySQL中,从varchar列,mysql,spring-data-jpa,Mysql,Spring Data Jpa,我试图通过使用以下JPA查询来获取记录 Deposit_number -------------- D100000 D99999 D50 ..... D4 D3 D2 D1 但结果是,我得到了一个记录,其中包含'D99999',我希望是'D100000'。如果有人有办法解决这个问题,请提供帮助。我想使用JPA查询来解决这个问题,而不是使用SQL本机查询。问题是您的存款编号列是文本,但您希望数字按数字排序,而不是文本。假设D是一个常量前缀,在整个列中只有非数字字符,我们可以尝试以下MySQL查询

我试图通过使用以下JPA查询来获取记录

Deposit_number
--------------
D100000
D99999
D50
.....
D4
D3
D2
D1

但结果是,我得到了一个记录,其中包含
'D99999'
,我希望是'D100000'。如果有人有办法解决这个问题,请提供帮助。我想使用JPA查询来解决这个问题,而不是使用SQL本机查询。

问题是您的
存款编号列是文本,但您希望数字按数字排序,而不是文本。假设
D
是一个常量前缀,在整个列中只有非数字字符,我们可以尝试以下MySQL查询:

Deposit findTopByCompanyOrderByDepositNumberDesc(Company company);
这个问题看起来难看吗?是的,确实如此,但是你存储存款号码的方式也很糟糕。如果不想使用上述查询,则考虑将存款号码存储在单独的列中。

SELECT *
FROM yourTable
ORDER BY CAST(SUBSTRING(Deposit_number, 2) AS SIGNED) DESC;