La base de données devrait faire cela au lieu de votre application :
select t.id_prfx, max(t.id_num) as latest_num from
(select substring(id, 1, 3) as id_prfx,
cast(substring(id,4) as integer) as id_num) t
group by id_prfx
Cela vous donnera un tableau de résultats où vous obtiendrez le numéro de pièce le plus élevé pour chaque préfixe.
Si vous ne voulez vraiment que des préfixes de 'ABC' alors :
select max(cast(substring(id,4) as integer)) as max_num from table
where id LIKE 'ABC%'