sql >> Databáze >  >> RDS >> Mysql

MySQL vrací přesnou shodu slov z textového obsahu

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.




  1. nelze na stránkách získat NĚKTERÉ proměnné relace

  2. Problémy Vytvoření spouštěče pomocí Oracle

  3. je možné vložit na základě výběru jednoho ze sloupců v MySQL?

  4. Vytvořte pole pro PDO z proměnných předaných z jquery