ホームページ >データベース >mysql チュートリアル >MySQL の LIKE 演算子を使用して複数の値を効率的にクエリする方法

MySQL の LIKE 演算子を使用して複数の値を効率的にクエリする方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-06 03:37:39892ブラウズ

How to Efficiently Query Multiple Values with MySQL's LIKE Operator?

MySQL LIKE クエリの複数の値

データベースでは、文字列内のパターンを一致させるために LIKE 演算子がよく使用されます。ただし、単一フィールド内の複数の値の一致を見つける必要がある場合は、困難になる可能性があります。この記事では、MySQL で LIKE 演算子を使用して複数の値をクエリする問題について説明します。

LIKE クエリが機能しない理由

提供されたクエリに従って:

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')

このクエリは、「興味」フィールドに「スポーツ」または「スポーツ」のいずれかが含まれる行を取得しようとします。 「パブ」またはその両方。ただし、LIKE は指定されたパターンの存在を順番にチェックするため、望ましい結果が得られない場合があります。この場合、最初にすべての行に存在する '%sports%' が検索され、次に 1 つの行にのみ存在する '%pub%' が検索されます。したがって、「スポーツ」と「パブ」の両方を含む行のみが取得されます。

より高速で効率的なソリューション

複数のパターンで LIKE を使用する代わりに、次の代替案を検討してください:

OR 論理演算子:

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'

このクエリは、OR 論理演算子を使用して 2 つの LIKE ステートメントを結合します。いずれかのパターンに一致する行が返されます。この方法は、通常、複数のパターンを使用する LIKE よりも高速です。

REGEXP 正規表現:

WHERE interests REGEXP 'sports|pub'

REGEXP 演算子を使用すると、正規表現を検索できます。この場合、「sports|pub」という表現は、「sports」または「pub」のいずれかに一致するものが見つかることを意味します。 REGEXP は、より複雑なパターン マッチングのための強力なツールになります。

参考リンク:

  • MySQL フォーラムのディスカッション: http://forums.mysql.com/read.php?10,392332,392950#msg-392950
  • MySQL REGEXP ドキュメント: http://www.tutorialspoint.com/mysql/mysql-regexps.htm

以上がMySQL の LIKE 演算子を使用して複数の値を効率的にクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。