Vždy můžete zkusit WHERE textcolumn LIKE "%SUBSTRING%"
- ale je zaručeno, že to bude dost pomalé, protože váš dotaz nemůže provést shodu indexu, protože hledáte znaky na levé straně.
Záleží na typu pole – textová oblast se obvykle neuloží jako VARCHAR, ale spíše jako (druh) pole TEXT, takže můžete použít Zápas PROTI operátor.
Chcete-li získat sloupce, které se neshodují, jednoduše vložte NOT před podobný výraz:WHERE textcolumn NOT LIKE "%SUBSTRING%"
.
Zda se při vyhledávání rozlišují velká a malá písmena, závisí na tom, jak data skladujete, zejména na tom, jaké COLLATION používáte. Ve výchozím nastavení bude vyhledávání nerozlišovat malá a velká písmena.
Aktualizovaná odpověď, aby odrážela aktualizaci otázky:
Říkám, že uděláte WHERE field LIKE "%value%"
je pomalejší než WHERE field LIKE "value%"
pokud má pole sloupce index, ale je to stále podstatně rychlejší než získání všech hodnot a použití filtru aplikace. Oba scénáře:
1/ Pokud SELECT field FROM table WHERE field LIKE "%value%"
, MySQL prohledá celou tabulku a odešle pouze pole obsahující "value".
2/ Pokud provedete SELECT field FROM table
a pak nechat svou aplikaci (ve vašem případě PHP) filtrovat pouze řádky s "hodnotou", MySQL také prohledá celou tabulku, ale všechna pole odešle do PHP, které pak musí udělat další práci. To je mnohem pomalejší než případ č. 1.
Řešení:Použijte prosím WHERE
klauzuli a použijte EXPLAIN
abyste viděli výkon.