Prawidłowa odpowiedź to prawdopodobnie wyszukiwanie pełnotekstowe.
Istnieją jednak dwa zastrzeżenia. Jeśli masz krótkie ciągi znaków, takie jak opisy produktów lub komentarze użytkowników, i chcesz użyć like
, możesz zrobić coś takiego:
where concat(' ', txt, ' ') like concat('% ', $word, ' %')
Zakłada się jednak, że ograniczniki są spacjami. Więc nie znalazłby "Hello". Możesz to naprawić, wykonując:
where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')
Ale szybko przekonasz się, że jest to uciążliwe. Stąd:wyszukiwanie pełnotekstowe.
Po drugie, jeśli naprawdę przechowujesz słowa kluczowe w kolumnie, rozwiązanie jest prostsze. Nie rób tego. Utwórz tabelę skrzyżowań, która ma jeden wiersz na oryginalny wiersz tabeli i jeden na słowo kluczowe. Przechowywanie list w łańcuchach to zły pomysł w SQL.