ホームページ >データベース >mysql チュートリアル >SQL クエリで LIKE 演算子と IN 演算子を効率的に組み合わせるにはどうすればよいですか?
SQL における "LIKE" 式と "IN" 式の組み合わせ
SQL では、LIKE 演算子はパターンベースの文字列一致を実行するために使用され、IN 演算子は値が指定された値のリスト内のいずれかの値と一致するかどうかをチェックします。ただし、これら 2 つの演算子を 1 つの式に結合する直接的な方法はありません。
一般的な解決策は、LIKE 演算子を含む一連の OR ステートメントを使用することです。例:
<code class="language-sql">WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%'</code>
このアプローチは冗長であり、パターンの数が多い場合には扱いにくくなる可能性があります。より柔軟で読みやすい解決策は、サブクエリを使用することです:
<code class="language-sql">SELECT * FROM table WHERE something IN ( SELECT * FROM (VALUES ('bla%'), ('%foo%'), ('batz%')) AS patterns(pattern) )</code>
ただし、一部のデータベース システムには、全文検索 (FTS) と呼ばれるより効率的なオプションがある場合があります。 Oracle と SQL Server はどちらも、テキスト データを検索するための拡張機能を提供する FTS 実装を提供します。
LIKE および IN と組み合わせて FTS を使用する
FTS では、より複雑なパターン マッチングが可能で、CONTAINS と呼ばれる特別な演算子が含まれています。この演算子を使用すると、複数のパターンを 1 つの式に結合して、LIKE と IN の機能を効果的に組み合わせることができます。
Oracle で CONTAINS を使用するための構文は次のとおりです:
<code class="language-sql">WHERE CONTAINS(column, 'pattern1 OR pattern2 OR ...') > 0</code>
SQL Server では、構文が少し異なります:
<code class="language-sql">WHERE CONTAINS(column, '"pattern1*" OR "pattern2*" OR ...')</code>
FTS を使用すると、1 ステップで複数のパターンを検索できる、よりクリーンで効率的なクエリを作成できます。これにより、特に複雑な検索条件を持つ大規模なデータ セットのパフォーマンスが大幅に向上します。
以上がSQL クエリで LIKE 演算子と IN 演算子を効率的に組み合わせるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。