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

Jak hledat frázi uvnitř tabulky SQL

Problém s překlepem je těžké, ne-li nemožné, dobře vyřešit v čistém MySQL.

FULLTEXT s více sloupci vyhledávání není tak špatné.

Váš dotaz bude vypadat nějak takto ...

 SELECT column, column
   FROM table
  WHERE MATCH(Company, FirstName, LastName, whatever, whatever) 
      AGAINST('search terms' IN NATURAL LANGUAGE MODE)

Vytvoří hromadu výsledků seřazených podle toho, co MySQL odhaduje jako nejpravděpodobnější zásah jako první. Odhady MySQL nejsou skvělé, ale obvykle jsou dostatečné.

Budete potřebovat FULLTEXT index odpovídající seznamu sloupců v MATCH() doložka. Vytvoření tohoto indexu vypadá takto.

ALTER TABLE book 
ADD FULLTEXT INDEX Fulltext_search_index_1 
    (Company, FirstName, LastName, whatever, whatever);

Bez ohledu na komentáře ve vaší otázce potřebujete pouze index pro skupinu sloupců, které budete prohledávat.

20 000 řádků nebude velkou zátěží pro žádný serverový hardware poslední doby.

Překlep:Můžete zkusit SOUNDEX() , ale je to algoritmus z počátku 20. století navržený Bellovým systémem k vyhledávání jmen lidí v americké angličtině. Je navržen tak, aby získal mnoho falešně pozitivních zásahů, a opravdu je hloupější než kýbl kamení.

Pokud opravdu potřebujete opravu kouzla, možná budete muset prozkoumat Sphinx.




  1. Jak získám plán provádění dotazů na serveru SQL Server?

  2. je možné mít generátor alfanumerické sekvence v sql

  3. Aktualizace souhrnné tabulky na základě spouštěčů a uložených procedur

  4. Jak získat seznam tabulek bez omezení primárního klíče v databázi SQL Server - SQL Server / Výukový program T-SQL, část 58