Você poderia fazer isso:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Pode ser uma boa ideia criar uma visão sobre esta tabela projetando um
name_value
extra coluna definida como IF()
expressão acima. Então você pode ordenar por esta coluna e selecioná-la sem ter que poluir suas consultas com IF()
. Exibição de exemplo, supondo que o nome da universidade esteja armazenado na coluna
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;
Então você pode selecionar
Universities
da mesma forma que você faz em list_universities
, exceto que terá um name_value
extra coluna que você pode selecionar, ou ordenar, ou qualquer outra coisa. Observe que esta abordagem (assim como
ORDER BY IF(...)
) não poderá usar nenhum índice em name
para melhorar o desempenho do tipo.