Jos hakee tietokannasta tekstihaulla (match) niin onko mahdollista järjestää hakutulokaset jotenkin järkevästi? Että ensin tulisivat täydelliset osumat ja sitten kaikki muu?
Esi jos hakee sanalla "uskomaton" ja vaihtoehdot ovat:
aika uskomaton
melko uskomaton
uskomaton
uskomaton juttu
Niin saako hakutulokset jotenkin "orderoitua" niin että ensin tulisi hakutulos "uskomaton" ja sen jälkeen kaikki muut aakkosjärjestyksessä?
Esi jos hakee sanalla "uskomaton" ja vaihtoehdot ovat:
aika uskomaton
melko uskomaton
uskomaton
uskomaton juttu
Niin saako hakutulokset jotenkin "orderoitua" niin että ensin tulisi hakutulos "uskomaton" ja sen jälkeen kaikki muut aakkosjärjestyksessä?
Vastaukset 3
Vanhimmat
Ehkä jotenkin näin unionin avulla:
select teksti, 1 as tarkkuus, muut_kentät
from foobar
where teksti = 'uskomaton'
union
select teksti, 10 as tarkkuus, muut_kentät
from foobar
where teksti like '%uskomaton%'
order by tarkkuus;
Noita unionin osia voit nyt lisätä tarpeen mukaan useampiakin, esim. %-merkki vain lopussa olisi tarkkuus = 2, %-merkki vain alussa olisi tarkkuus = 3, %-merkki jokaisen sanavälin kohdalla olisi tarkkuus = 4, jne.
Toinen vaihtoehto on tehdä sql-funktio tai vastaava, joka annetuista kahdesta merkkijonosta jollakin algoritmilla päättelee niiden samuuden esim. prosentteina 0-100 %. Näin voinet järjestää lopullisen hakutuloksen tämän perusteella.
*Aiheen hyväksikäyttö*
Otsikko kertoo kaiken, eli pitäisi saada järjestettyä tulokset neljännen kirjaimen perusteella. Miten tuo onnistuu?
Tähän tyyliin:
113A
111B
112C
SELECT * FROM mun_taulu ORDER BY SUBSTR(mun_tekstikentta, 4, 1);