sql >> Database >  >> RDS >> Mysql

Geavanceerd MySQL alfabetisch sorteren met voorvoegsel?

Je zou dit kunnen doen:

ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)

Het kan een goed idee zijn om een ​​weergave van deze tabel te maken met een extra name_value kolom ingesteld op IF() uitdrukking hierboven. Dan kunt u op deze kolom bestellen en deze selecteren zonder uw zoekopdrachten te vervuilen met IF() .

Voorbeeldweergave, ervan uitgaande dat de universiteitsnaam is opgeslagen in de kolom 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;

Dan kun je kiezen uit Universities op dezelfde manier als bij list_universities , behalve dat het een extra name_value . heeft kolom die u kunt selecteren of bestellen, of wat dan ook.

Merk op dat deze benadering (evenals ORDER BY IF(...) ) kan geen index gebruiken op name om de prestaties van de soort te verbeteren.



  1. Applicatiecode herontwerp om nee te verminderen. van databasehits vanuit prestatieperspectief

  2. Hoe beperk je de groep op rijen in een mysql-query?

  3. Resultaten van een zoekopdracht binnen dezelfde zoekopdracht gebruiken

  4. Verbinding maken met MySQL-server na installatie van XAMPP op Mac OS