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

Jak používat zástupné znaky předpony jako '*abc' s match-against

Shoda nefunguje s počátečními zástupnými znaky, takže shoda s *abc* nebude fungovat. Budete muset použít LIKE jak toho dosáhnout:

SELECT * FROM user WHERE user_login LIKE '%abc';

To však bude velmi pomalé.

Pokud opravdu potřebujete najít shodu na konci řetězce a musíte to dělat často, zatímco vás výkon zabíjí, řešením by bylo vytvořit samostatný sloupec, ve kterém byste obrátili řetězce, takže máte:

user_login user_login_rev
xyzabc     cbazyx

Potom místo hledání '%abc' , můžete hledat 'cba%' což je mnohem rychlejší, pokud je sloupec indexován. A můžete znovu použít MATCH, pokud chcete hledat 'cba*' . Budete muset také obrátit vyhledávací řetězec.



  1. MySQL COUNT() ve více sloupcích

  2. Nesprávná neutralizace speciálních prvků použitých v příkazu SQL

  3. Minimalizace dopadu rozšíření sloupce IDENTITY – část 2

  4. Getting Error – ORA-01858:Na místě, kde se očekávala číslice, byl nalezen nečíselný znak