NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Řazení podle počtu obsažených znaků při operátoru LIKE

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr Kančík:24.9.2017 18:12

Ahojte, potřeboval bych pomoci s jedním dotazem. Vůbec si nevím rady.
Jde o vyhledávání uživatelů podle jména, takový našeptávač.
Uživatel může poslat zprávu jinému uživateli a aby si nemusel pamatovat jeho jméno dopodrobna, tak se bude odesílat ajax dotaz, který se doptá na databázi přes PHP.
Můj dotaz vypadá teď následovně:

SELECT name
FROM users
WHERE name LIKE %text%
LIMIT 5

Jen bych potřeboval, aby se mi to řadilo podle počtu obsažených znaků v parametru.
Uvedu na příkladě.
text = 'a'
v databázi je třeba uživatel Honza a Anakonda .
V prvním slově je a obsaženo jednou, proto bude až druhé. Za to anakonda obsahuje 'a' hned 3x, tudíž bude mezi prvními výsledky a do LIMITu se vleze.
Nevíte jak to zapsat v SQL pls ?
Moc by to pomohlo. Díky moc!

Editováno 24.9.2017 18:12
 
Odpovědět
24.9.2017 18:12
Avatar
Odpovídá na Petr Kančík
Michal Štěpánek:25.9.2017 5:58

Trošku mi to přijde jako nesmysl. Když těch jmen obsahujících stejný počet "požadovaných" písmen bude víc, zobrazí se jich jen 5. Co když ale ten, co ho hledám bude až další?

Nahoru Odpovědět
25.9.2017 5:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Robert Poč
Člen
Avatar
Robert Poč:25.9.2017 10:52

Smysluplnost ponechávám stranou.

SELECT
        name,
        len(name) - len(replace(name, 'text', '')) AS pocet
FROM
        users
WHERE
        name LIKE %text%
ORDER BY
        pocet DESC
 
Nahoru Odpovědět
25.9.2017 10:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.