Správnou odpovědí je pravděpodobně fulltextové vyhledávání.
Existují však dvě upozornění. Pokud máte krátké řetězce, jako jsou popisy produktů nebo komentáře uživatelů, a chcete použít like
, můžete udělat něco takového:
where concat(' ', txt, ' ') like concat('% ', $word, ' %')
To však předpokládá, že oddělovače jsou mezery. Takže nenajde "Ahoj". Můžete to opravit takto:
where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')
Ale rychle zjistíte, že je to bolest. Proto:fulltextové vyhledávání.
Za druhé, pokud skutečně ukládáte klíčová slova v koloně, pak je řešení jednodušší. Nedělej to. Vytvořte spojovací tabulku, která má jeden řádek na původní řádek tabulky a jeden na klíčové slovo. Ukládání seznamů do řetězců je v SQL špatný nápad.