Potresti farlo:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Potrebbe essere una buona idea creare una vista su questa tabella proiettando un ulteriore name_value
colonna impostata su IF()
espressione sopra. Quindi puoi ordinare in base a questa colonna e selezionarla senza dover inquinare le tue query con IF()
.
Visualizzazione di esempio, supponendo che il nome dell'università sia memorizzato nella colonna 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;
Quindi puoi selezionare da Universities
allo stesso modo di list_universities
, tranne per il fatto che avrà un name_value
extra colonna che puoi selezionare, ordinare per o altro.
Nota che questo approccio (così come ORDER BY IF(...)
) non sarà in grado di utilizzare alcun indice su name
per migliorare le prestazioni dell'ordinamento.