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.