ホームページ > データベース > mysql チュートリアル > MySQL を効率的に使用して、文字列フィールド内の複数の値に一致する行を検索するにはどうすればよいですか?

MySQL を効率的に使用して、文字列フィールド内の複数の値に一致する行を検索するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-06 05:13:43
オリジナル
875 人が閲覧しました

How Can I Efficiently Use MySQL to Find Rows Matching Multiple Values in a String Field?

MySQL の Like 演算子の範囲の拡張

MySQL の Like 演算子は、文字列内のパターンを照合するための強力なツールです。ただし、複数の値が関係する複雑な一致基準を扱う場合は、不十分な場合があります。

興味フィールドにスポーツまたはパブ (またはその両方) が含まれる行を取得することを目的とした次のクエリを考えてみましょう。

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
ログイン後にコピー

多くの人が驚いたことに、このクエリでは望ましい結果が得られません。その理由は、Like 演算子が複数のパターンを処理する方法にあります。各パターンを順番に適用し、両方のパターンに一致する行を返します。この場合、クエリは実質的に次のようになります。

SELECT * FROM table WHERE interests LIKE ('%sports%') AND interests LIKE ('%pub%')
ログイン後にコピー

関心フィールドの値に「スポーツ」と「パブ」の両方が含まれていないため、クエリは空のセットを返します。

解決策: 代替マッチング手法の採用

この問題を解決するには、別のアプローチを採用する必要があります。最初のオプションは、論理演算子を使用してパターンを区切ることです。

SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
ログイン後にコピー

このクエリは、興味フィールドに「スポーツ」または「パブ」のいずれかを含む行と効果的に一致します。

さらに多くのオプション効率的な解決策は、MySQL の REGEXP 演算子を使用することです。これにより、正規表現を使用してパターンを照合できるようになります。

SELECT * FROM table WHERE interests REGEXP 'sports|pub'
ログイン後にコピー

このクエリでは、 '|' (パイプ) 記号を使用して、興味のあるフィールドが「スポーツ」または「パブ」のいずれかに一致することを指定します。

これらの代替一致手法を採用することで、Like 演算子の機能を拡張し、目的を満たす行を取得できます。基準。

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

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