ホームページ >データベース >mysql チュートリアル >カンマ区切りの MySQL 文字列の特定の値を正確に照合するにはどうすればよいですか?

カンマ区切りの MySQL 文字列の特定の値を正確に照合するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-22 21:32:10911ブラウズ

How to Accurately Match Specific Values in Comma-Separated MySQL Strings?

カンマ区切りの MySQL 文字列内の特定の値と一致します

カンマ区切りの値を含むテーブルを操作する場合、多くの場合、これらの文字列内の特定の値を分離する必要があります。ただし、LIKE 演算子をワイルドカード文字 (%) とともに使用すると、予期しない一致が生じる可能性があります。

SHIRTS テーブルの COLORS フィールドについて考えてみましょう。このフィールドには、「1,2,5,12,15」などの値が含まれています。 「SELECT * FROM シャツ WHERE colours LIKE '%1%'」のようなクエリは、赤色 (color=1) のシャツをすべて検索しようとします。ただし、予期せず、グレー (color=12) とオレンジ (color=15) の色のシャツも取得します。

解決策:

1. カンマを接続します:

古典的な解決策は、文字列の左側と右側にカンマを連結することです:

<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>

これにより、文字列の前後にカンマが追加され、完全一致 (color=1) のみが選択されるようになります。

2. find_in_set 関数を使用します:

また、find_in_set 関数を使用して、カンマ区切りの文字列内の特定の値を検索することもできます。

<code class="language-sql">SELECT * FROM shirts WHERE find_in_set('1', colors) > 0</code>

この関数は、指定された値が文字列内で見つかった場合にゼロ以外の値を返し、実質的に color=1 のシャツを分離します。

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

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