Вы можете сделать это:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Возможно, было бы неплохо создать представление для этой таблицы, проецируя дополнительный столбец name_value
, для которого установлено выражение IF()
выше. Затем вы можете сделать заказ по этому столбцу и выбрать его, не загрязняя ваши запросы IF()
.
Пример представления, предполагая, что название университета хранится в столбце 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;
Затем вы можете выбрать из Universities
так же, как и из list_universities
, за исключением того, что у него будет дополнительный столбец name_value
, который вы можете выбрать, или упорядочить, или как угодно.
Обратите внимание, что этот подход (а также ORDER BY IF(...)
) не сможет использовать какой-либо индекс на name
для повышения производительности сортировки.