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.