Du kan gøre dette:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Det kan være en god idé at skabe en visning over denne tabel, der projicerer en ekstra name_value
kolonne sat til IF()
udtryk ovenfor. Så kan du bestille efter denne kolonne og vælge den uden at skulle forurene dine forespørgsler med IF()
.
Eksempelvisning, forudsat at universitetets navn er gemt i kolonnen 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;
Derefter kan du vælge fra Universities
på samme måde som du gør fra list_universities
, bortset fra at den vil have en ekstra name_value
kolonne, som du kan vælge eller bestille efter eller hvad som helst.
Bemærk, at denne fremgangsmåde (såvel som ORDER BY IF(...)
) vil ikke være i stand til at bruge noget indeks på name
for at forbedre den slags ydeevne.