sql >> Database teknologi >  >> RDS >> Mysql

Avanceret MySQL alfabetisk sortering med præfiks?

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.



  1. MySQL - Rækker til kolonner

  2. Ting du skal vide om FND_LOBS Table i Oracle Apps

  3. MySQL-syntaksfejl under oprettelse af en funktion

  4. Hvordan fungerer PostgreSQL security_barrier views?