ホームページ > データベース > mysql チュートリアル > カンマ区切りの MySQL 文字列の完全一致をクエリするにはどうすればよいですか?

カンマ区切りの MySQL 文字列の完全一致をクエリするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-22 21:37:14
オリジナル
626 人が閲覧しました

How to Query for Exact Matches in Comma-Separated MySQL Strings?

MySQL 内のカンマ区切り文字列の完全一致をクエリします

カンマ区切りの文字列を含む MySQL フィールドを操作する場合、特定の値のクエリには課題が生じることがよくあります。たとえば、文字列内の特定の値を持つすべてのレコードをクエリする場合、ターゲット数値の他の値を含むレコードを誤って取得してしまう可能性があります。

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

<code class="language-sql">select * from shirts where colors like '%1%'</code>
ログイン後にコピー

このクエリは、色が赤 (color=1) のすべてのシャツを取得するように設計されています。ただし、グレー (=12) とオレンジ (=15) の色のシャツも取得します。これらの色には数字の 1 が含まれているためです。

この問題を解決するには、検索している正確な色の値のみが選択されるようにクエリを改善します。一般的に使用される 2 つの方法は次のとおりです:

1. カンマを接続します

この方法では、ターゲット値の左右にカンマを追加します。こうすることで、検索文字列は、目的の値と正確に一致する値のみに一致するようになります。

<code class="language-sql">select * from shirts where CONCAT(',', colors, ',') like '%,1,%'</code>
ログイン後にコピー

2. find_in_set を使用します

find_in_set 関数を使用して、目的の結果を達成することもできます。この関数は 2 つのパラメータを取ります:

  • 検索している目標値
  • 検索するカンマ区切りの文字列

find_in_set が 0 より大きい値を返した場合、それは文字列内にターゲット値が存在することを意味します。クエリの例は次のとおりです:

<code class="language-sql">select * from shirts where find_in_set('1', colors) > 0</code>
ログイン後にコピー

これら 2 つの方法のいずれかを使用すると、不要な一致を検出することなく、MySQL クエリで関心のある正確な色の値のレコードを正確に取得できます。

以上がカンマ区切りの MySQL 文字列の完全一致をクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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