ええと、いつでも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
を使用します パフォーマンスを確認します。