Rätt svar är förmodligen fulltextsökning.
Det finns dock två varningar. Om du har korta strängar, som produktbeskrivningar eller användarkommentarer, och vill använda like
, kan du göra något så här:
where concat(' ', txt, ' ') like concat('% ', $word, ' %')
Detta förutsätter dock att avgränsningarna är mellanrum. Så den skulle inte hitta "Hej". Du kan fixa detta genom att göra:
where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')
Men du kommer snabbt att upptäcka att det här är jobbigt. Därför:fulltextsökning.
För det andra, om du verkligen lagrar sökord i kolumnen, då är lösningen enklare. Gör inte det. Skapa en korsningstabell som har en rad per ursprungliga tabellrad och en per nyckelord. Att lagra listor i strängar är en dålig idé i SQL.