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 サイトの他の関連記事を参照してください。