Vous pouvez faire ceci :
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Il peut être judicieux de créer une vue sur cette table projetant un name_value supplémentaire colonne définie sur IF() expression ci-dessus. Ensuite, vous pouvez trier par cette colonne et la sélectionner sans avoir à polluer vos requêtes avec IF() .
Exemple de vue, en supposant que le nom de l'université est stocké dans la colonne name :
CREATE VIEW Universities AS
SELECT
list_universities.*,
IF(SUBSTRING(name, 1, 14) = 'University of ',
SUBSTRING(name, 15),
name) AS name_value
FROM list_universities;
Ensuite, vous pouvez choisir parmi Universities de la même manière que vous le faites depuis list_universities , sauf qu'il aura un name_value supplémentaire colonne que vous pouvez sélectionner, ou trier par, ou quoi que ce soit.
Notez que cette approche (ainsi que ORDER BY IF(...) ) ne pourra pas utiliser d'index sur name pour améliorer les performances du tri.