codice:
select
@tpos:=LEAST(
IF(LOCATE('1', campo) > 0, LOCATE('1', campo), 100),
IF(LOCATE('2', campo) > 0, LOCATE('2', campo), 100),
IF(LOCATE('3', campo) > 0, LOCATE('3', campo), 100),
IF(LOCATE('4', campo) > 0, LOCATE('4', campo), 100),
IF(LOCATE('5', campo) > 0, LOCATE('5', campo), 100),
IF(LOCATE('6', campo) > 0, LOCATE('6', campo), 100),
IF(LOCATE('7', campo) > 0, LOCATE('7', campo), 100),
IF(LOCATE('8', campo) > 0, LOCATE('8', campo), 100),
IF(LOCATE('9', campo) > 0, LOCATE('9', campo), 100) )
As tpos,
MID(nome, 1, @tpos-1) As stringa,
(0+MID(nome, @tpos)) As numero
from tabella
group by substring(MID(campo, 1, @tpos-1),1,3),0+MID(campo, @tpos)