[MySQL] - pozycja wyszukanej frazy

0

Witam was.

Pisze ostatnio prosta wyszukiwarke i oczywiscie trafilem na problem. Mianowicie jezeli mam zapytanie

SELECT * FROM wiadomosci
WHERE pole1 LIKE "%tekst%" OR pole2 LIKE "%tekst%" OR pole3 LIKE "%tekst%"

Czy da sie w jakikolwiek sposob sprawdzic w ktorych kolumnach zostal znaleziony wyszukiwany tekst oraz na jakiej pozycji?

Poniewaz chcialbym uzytkownikowi wyswietlic fragment kolumny i pogrubiona wyszukiwana fraze ( jak w google, wiecie o co chodzi ).

Jezeli macie jakies pomysly to dajcie znac.
Najlepiej jakby bylo jakies rozwiazanie przy pomocy zapytania bo ponowne wyszukiwanie w php to ostatecznosc.

0
SELECT *,'pole1' as identyfikator_pola FROM wiadomosci WHERE pole1 LIKE "%tekst%"
union
SELECT *,'pole2' as identyfikator_pola FROM wiadomosci WHERE pole2 LIKE "%tekst%"
union
SELECT *,'pole3' as identyfikator_pola FROM wiadomosci WHERE pole3 LIKE "%tekst%"

"*" koniecznie na początku.

0

Dzieki :-)
To pytanie ktora to kolumna juz jest zalatwione.
A czy da sie jeszcze jakos odczytac pozycje w tekscie?
Np jezeli slowo "tekst" jest 12 slowem w polu2 to da sie jakos odczytac ta pozycje, ze np. slowo tekst znajduje sie na 112 znaku? Czy pozostaje juz tylko php?

0
SELECT *,'pole1' AS identyfikator_pola, LOCATE('tekst',pole1) AS pozycja FROM wiadomosci WHERE pole1 LIKE "%tekst%"
union
SELECT *,'pole2' as identyfikator_pola, LOCATE('tekst',pole1) AS pozycja  FROM wiadomosci WHERE pole2 LIKE "%tekst%"
union
SELECT *,'pole3' as identyfikator_pola, LOCATE('tekst',pole1) AS pozycja  FROM wiadomosci WHERE pole3 LIKE "%tekst%"

Ogólnie to proponowałbym zapoznać się z tym skoro korzystasz z MySQL. Fakt, że po angielsku, ale w "branży" jak nie znasz angielskiego przynajmniej biernie to ... zmień branżę :>

0

Spoko poradze sobie.
A co do "branzy" to obecnie nie jest moja branza.
Po prostu pisze sobie swoja stronke i chce cos takiego napisac.
Tak czy inaczej dzieki za odpowiedzi.

0
Loloki napisał(a)
SELECT *,'pole1' as identyfikator_pola FROM wiadomosci WHERE pole1 LIKE "%tekst%"
union
SELECT *,'pole2' as identyfikator_pola FROM wiadomosci WHERE pole2 LIKE "%tekst%"
union
SELECT *,'pole3' as identyfikator_pola FROM wiadomosci WHERE pole3 LIKE "%tekst%"

"*" koniecznie na początku.

Dlaczego "koniecznie na początku"? Zaciekawiło mnie to...
Poza tym tylko w pierwszym SELCT podaje się nazwy pól - w kolejnych już raczej nie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1