Autor Zpráva
Sortex
Profil *
Mám sloupec 'jmena' s UTF-8-czech_ci a potřebuju z něj data seřadit podle toho kolik mají znaků (ne bajtů!)

očekávaný výsledek takový :

1|Svatopluk Červeňásek
2|Jaroslav Červeňásek 
3|Karel Červeňásek
...
...
9|Jan Malý


Jména "nejkratší" - na konci řazení.... Jak se to dá vykonat?
RastyAmateur
Profil
Sortex:
Vyzkoušel bych nějakou radu ze stackoverflow.
juriad
Profil
Sortex:
Přidej další sloupec, do kterého si budeš ukládat délku jmen, a řaď podle tohoto sloupce. Se správným indexem je to svižné.
Mohl bys řadit podle CHAR_LENGTH(jmena), ale to by bylo pomalé - pro každý dotaz by bylo nutné doslova přečíst celou tabulku, vypočítat délky, a pak až řadit.
Amunak
Profil
Doplnil bych, že pokud půjde o malé tabulky nebo dotazy, které velkou tabulku vyfiltrují na malý počet výsleků, dopad na rychlost to bude mít minimální.

Jinak pokud se zvolí cesta formou počítání předem, šlo by k tomu využít databázové triggery, aby se počítání znaků a pak ukládání do databáze nemuselo provádět v kódu.

Stejně tak k tomu lze mít i takový přístup, že se výsledky seřadí až po vybrání z databáze. Řešení které navrhuje juriad ovšem skutečně bude v obvyklých případech nejrychlejší, přestože sebou nese nutnost pamatovat na počítání znaků při insertech a updatech jména.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0