Możesz to zrobić:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Dobrym pomysłem może być utworzenie widoku nad tą tabelą wyświetlającego dodatkową name_value kolumna ustawiona na IF() wyrażenie powyżej. Następnie możesz uporządkować według tej kolumny i wybrać ją bez konieczności zanieczyszczania zapytań za pomocą IF() .
Przykładowy widok, przy założeniu, że nazwa uczelni jest przechowywana w kolumnie 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;
Następnie możesz wybrać spośród Universities w ten sam sposób co z list_universities , z wyjątkiem tego, że będzie miał dodatkową name_value kolumnę, którą możesz wybrać, uporządkować według lub cokolwiek innego.
Zauważ, że to podejście (jak również ORDER BY IF(...) ) nie będzie mógł używać żadnego indeksu w name aby poprawić wydajność tego rodzaju.