ホームページ >データベース >mysql チュートリアル >カンマ区切りの MySQL 文字列の特定の値を正確に照合するにはどうすればよいですか?
カンマ区切りの 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 サイトの他の関連記事を参照してください。