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