Disculpa, creí que SUBSTRING y SUBSTR darían lo mismo pero no, cambia SUBSTR por SUBSTRING, ya hice pruebas y funciona
Código PHP:
SELECT * FROM alumnos
WHERE ASCII(UPPER(SUBSTRING(nombre, 1, 1))) > (ASCII('A')-1) AND
ASCII(UPPER(SUBSTRING(nombre, 1, 1))) < (ASCII('H')+1) ORDER BY UPPER(nombre)
La solución de
Lord of freaks también funciona y es más corta.