2

我有一列称为订单号 (orderNum) 的数据,可以如下所示:

1124, 203, 5467, MANUAL1, MANUAL34, DEMO12, DEMO998, INTERNAL2312, INTERNAL232

本质上,我需要编写一个 SQL 查询来检索某种类型的“最大”订单号。整数的实际顺序是微不足道的,但是 MySQL 对VARCHARs 进行的排序有点古怪。因此,在上面的数据集中,如果我正在寻找下一个手动订单号,我需要能够知道这MANUAL34是最后使用的手动订单号,,INTERNAL2312DEMO12数字将按顺序增加 1)。有没有一种方法可以实现这一点,而不必拉出整个列并在我的 Java Web 服务中对其进行排序?

4

1 回答 1

4

您可以执行以下操作:

select * from testing where value like 'MANUAL%' 
order by CAST(right(value, length(value)-length('MANUAL')) as UNSIGNED) desc 
LIMIT 1

链接到 SQL 小提琴

于 2012-10-17T18:33:37.220 回答