ホームページ > データベース > mysql チュートリアル > SQL クエリで LIKE 演算子と IN 演算子を効率的に組み合わせるにはどうすればよいですか?

SQL クエリで LIKE 演算子と IN 演算子を効率的に組み合わせるにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-21 13:27:09
オリジナル
721 人が閲覧しました

How Can I Efficiently Combine LIKE and IN Operators in SQL Queries?

SQL における "LIKE" 式と "IN" 式の組み合わせ

SQL では、LIKE 演算子はパターンベースの文字列一致を実行するために使用され、IN 演算子は値が指定された値のリスト内のいずれかの値と一致するかどうかをチェックします。ただし、これら 2 つの演算子を 1 つの式に結合する直接的な方法はありません。

一般的な解決策は、LIKE 演算子を含む一連の OR ステートメントを使用することです。例:

WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%'
ログイン後にコピー

このアプローチは冗長であり、パターンの数が多い場合には扱いにくくなる可能性があります。より柔軟で読みやすい解決策は、サブクエリを使用することです:

SELECT * FROM table WHERE something IN (
  SELECT * FROM (VALUES ('bla%'), ('%foo%'), ('batz%')) AS patterns(pattern)
)
ログイン後にコピー

ただし、一部のデータベース システムには、全文検索 (FTS) と呼ばれるより効率的なオプションがある場合があります。 Oracle と SQL Server はどちらも、テキスト データを検索するための拡張機能を提供する FTS 実装を提供します。

LIKE および IN と組み合わせて FTS を使用する

FTS では、より複雑なパターン マッチングが可能で、CONTAINS と呼ばれる特別な演算子が含まれています。この演算子を使用すると、複数のパターンを 1 つの式に結合して、LIKE と IN の機能を効果的に組み合わせることができます。

Oracle で CONTAINS を使用するための構文は次のとおりです:

WHERE CONTAINS(column, 'pattern1 OR pattern2 OR ...') > 0
ログイン後にコピー

SQL Server では、構文が少し異なります:

WHERE CONTAINS(column, '"pattern1*" OR "pattern2*" OR ...')
ログイン後にコピー

FTS を使用すると、1 ステップで複数のパターンを検索できる、よりクリーンで効率的なクエリを作成できます。これにより、特に複雑な検索条件を持つ大規模なデータ セットのパフォーマンスが大幅に向上します。

以上がSQL クエリで LIKE 演算子と IN 演算子を効率的に組み合わせるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート