sql >> Databáze >  >> RDS >> Mysql

Pokročilé abecední řazení MySQL s předponou?

Můžete to udělat takto:

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

Mohlo by být dobré vytvořit pohled nad touto tabulkou promítající extra name_value sloupec nastaven na IF() výraz výše. Poté můžete seřadit podle tohoto sloupce a vybrat jej, aniž byste museli své dotazy znečišťovat pomocí IF() .

Příklad zobrazení za předpokladu, že název univerzity je uložen ve sloupci 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;

Poté si můžete vybrat z Universities stejným způsobem jako z list_universities , kromě toho bude mít navíc name_value sloupec, který můžete vybrat, seřadit podle něj nebo cokoli jiného.

Všimněte si, že tento přístup (stejně jako ORDER BY IF(...) ) nebude moci použít žádný index na name zlepšit výkon tohoto druhu.



  1. Problém s vložením znaků MySQL UTF-8

  2. jak najít indexy v tabulce v oracle

  3. Výpadky s EMCLI

  4. Postgresql gem install pg 0.18.4 projde, instalace balíčku se nezdaří