Mysql
 sql >> база данни >  >> RDS >> Mysql

Разширено MySQL сортиране по азбучен ред с префикс?

Можете да направите това:

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

Може да е добра идея да създадете изглед върху тази таблица, проектиращ допълнителна name_value колона, зададена на IF() израз по-горе. След това можете да подредите по тази колона и да я изберете, без да се налага да замърсявате заявките си с IF() .

Примерен изглед, като се приеме, че името на университета се съхранява в колоната 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;

След това можете да изберете от Universities по същия начин, по който го правите от list_universities , освен че ще има допълнителна name_value колона, която можете да изберете, да подредите или каквото и да е.

Имайте предвид, че този подход (както и ORDER BY IF(...) ) няма да може да използва никакъв индекс на name за подобряване на производителността на вида.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направя вложена заявка?

  2. MySQL:Отрязване на таблица в транзакция?

  3. Mysql - Как мога да избирам редове по година, ако имам само клеймото за време?

  4. Обвързване на адрес и MySQL сървър

  5. PDO bindParam за дата не работи