ええと、いつでもWHERE textcolumn LIKE "%SUBSTRING%"を試すことができます -ただし、左側の文字を探しているため、クエリでインデックスマッチを実行できないため、これはかなり遅いことが保証されています。
フィールドタイプによって異なります。通常、テキストエリアはVARCHARとして保存されるのではなく、(一種の)TEXTフィールドとして保存されるため、一致する オペレーター。
一致しない列を取得するには、次のようにNOTを前に付けるだけです。WHERE textcolumn NOT LIKE "%SUBSTRING%" 。
検索で大文字と小文字が区別されるかどうかは、データの保存方法、特に使用するCOLLATIONによって異なります。デフォルトでは、検索では大文字と小文字が区別されません。
質問の更新を反映するように回答を更新しました:
WHERE field LIKE "%value%"を実行すると言います WHERE field LIKE "value%"よりも遅い 列フィールドにインデックスがある場合でも、これはすべての値を取得してアプリケーションフィルターを使用するよりもかなり高速です。両方のシナリオ:
1 / SELECT field FROM table WHERE field LIKE "%value%"を実行する場合 、MySQLはテーブル全体をスキャンし、「value」を含むフィールドのみを送信します。
2 / SELECT field FROM tableを実行した場合 次に、アプリケーション(この場合はPHP)に「value」を含む行のみをフィルター処理させると、MySQLもテーブル全体をスキャンしますが、すべてのフィールドをPHPに送信し、PHPは追加の作業を行う必要があります。これはケース#1よりもはるかに遅いです。
解決策:WHEREを使用してください 句を使用し、EXPLAINを使用します パフォーマンスを確認します。