在mysql中从varchar列获取的最大值不超过'd99999'

ix0qys7i  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(351)
Deposit_number
--------------
D100000
D99999
D50
.....
D4
D3
D2
D1

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

Deposit findTopByCompanyOrderByDepositNumberDesc(Company company);

但结果我得到了一张包含 'D99999' 我期待着10万美元。如果有人有办法解决这个问题,请帮忙。我想使用jpa查询来解决这个问题,而不是使用sql本地查询。

rsaldnfx

rsaldnfx1#

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

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

这个问题看起来难看吗?是的,确实如此,但是你储存存款号码的方式也很难看。如果您不想使用上述查询,那么可以考虑将存款号码存储在单独的列中。

相关问题