Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zaawansowane sortowanie alfabetyczne MySQL z prefiksem?

Możesz to zrobić:

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

Dobrym pomysłem może być utworzenie widoku nad tą tabelą wyświetlającego dodatkową name_value kolumna ustawiona na IF() wyrażenie powyżej. Następnie możesz uporządkować według tej kolumny i wybrać ją bez konieczności zanieczyszczania zapytań za pomocą IF() .

Przykładowy widok, przy założeniu, że nazwa uczelni jest przechowywana w kolumnie 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;

Następnie możesz wybrać spośród Universities w ten sam sposób co z list_universities , z wyjątkiem tego, że będzie miał dodatkową name_value kolumnę, którą możesz wybrać, uporządkować według lub cokolwiek innego.

Zauważ, że to podejście (jak również ORDER BY IF(...) ) nie będzie mógł używać żadnego indeksu w name aby poprawić wydajność tego rodzaju.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wprowadzenie do przełączania awaryjnego dla replikacji MySQL — blog 101

  2. Jak zmienić klucz obcy tabeli MySQL za pomocą wiersza poleceń?

  3. Porządkowanie najpierw według określonej wartości pola

  4. Codeigniter — modele dostępu i bazy danych dotyczące routingu

  5. mysql jak przekonwertować varchar(10) na TIMESTAMP?