ホームページ > データベース > mysql チュートリアル > MySQL 列内の複数の文字列を効率的に検索するにはどうすればよいですか?

MySQL 列内の複数の文字列を効率的に検索するにはどうすればよいですか?

DDD
リリース: 2025-01-11 19:41:42
オリジナル
402 人が閲覧しました

How Can I Efficiently Search for Multiple Strings Within a MySQL Column?

MySQL の find_in_set 関数を使用して複数の文字列を検索します

MySQL の find_in_set() 関数を使用すると、カラムに格納された文字列セット内の特定の文字列を検索できます。ただし、単一の検索文字列を使用してのみ検索できます。

チャレンジ: 複数の文字列を使用して検索

文字列のセット内で複数の文字列を検索する必要がある状況が発生する場合があります。たとえば、顧客が特定のカテゴリに属する​​特定の製品を購入したかどうかを確認したい場合があります。この場合、find_in_set() を使用するだけでは十分ではありません。

複数文字列検索を実装するための find_in_set() のシミュレーションのヒント

find_in_set() を使用して複数文字列検索をシミュレートする回避策があります:

  1. 文字列のセットを含む列の先頭と末尾にカンマを追加します。これにより、セットがカンマで囲まれるようになります。
  2. 正規表現 (REGEX) を使用して、パイプ記号 (|) で区切られた検索文字列を含むパターンを検索します。パイプ文字は論理 OR を表し、任意の文字列と一致します。

正規表現の説明:

  • "," - コレクションの先頭にあるカンマと一致します。
  • setcolumn - 文字列のセットを含む列の名前。
  • "," - セットの末尾のカンマと一致します。
  • ," - 二重引用符が後に続くカンマと一致します。
  • (val1|val2|val3) - 括弧で囲まれたパイプ区切りの検索文字列。
  • ," - 二重引用符が後に続くカンマと一致します。

例:

次のクエリを考えてみましょう:

<code class="language-sql">SELECT *
FROM table
WHERE CONCAT(",", `product_set`, ",") REGEXP ",(electronics|clothing|accessories),";</code>
ログイン後にコピー

このクエリでは、product_set 列に顧客が購入した製品のカンマ区切りリストが含まれています。 REGEXP 式は、コレクションに「electronics」、「clothing」、「accessories」の 3 つの検索文字列のいずれかが含まれているかどうかをチェックします。

以上がMySQL 列内の複数の文字列を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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