Numarul de aparitii a unui string intr-un camp MySql

Average: 5 (1 vote)

Ce faceti daca sistemul / baza de date / tabela nu va permite sa faceti o cautare cu full text search? Pai folositi LIKE. BIne, folositi like, dar rezultatele vor aparea ordonate dupa ordinea din tabela, fara a avea vreo relevanta "greutatea" keywordului cautat.

O modalitate relativ simpla de a organiza rezultatele in functie de greutate este afisare in functie de numarul de aparitii al keywordului intr-un camp.

Interogarea ar arata cam asa:

SELECT id, (LENGTH(content) - LENGTH(REPLACE (content,'string_de_cautat','')))/LENGTH('string_de_cautat') as hits from articles order by hits desc

Explicatie: extragem numarul de caractere din campul content, inlocuim stringul cautat cu '' (NULL), apoi extragem iar numarul de caractere. Diferenta rezultata din cele 2 numere impartita la lungimea stringului cautat va intoarce fix numarul de aparitii a stringului in acel camp.

Spor !

Tags: