ホームページ >データベース >mysql チュートリアル >カンマ区切りの値フィールドの完全一致を求めて MySQL に効率的にクエリを実行するにはどうすればよいですか?

カンマ区切りの値フィールドの完全一致を求めて MySQL に効率的にクエリを実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-22 21:41:12291ブラウズ

How Can I Efficiently Query MySQL for Exact Matches in Comma-Separated Value Fields?

カンマ区切り値に対する MySQL クエリの最適化

カンマ区切りの数値カラーコードを格納する SHIRTS フィールドを持つ COLORS テーブルを調べてみましょう。 単純な LIKE クエリでは不正確な結果が得られる可能性があります:

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

このクエリは、1、12、または 15 のような色のシャツを含む、colors フィールドのどこかに '1' を含むシャツを返します。カラー コード 1 のシャツだけを検索するには、より正確なメソッドが必要です。

効果的な手法の 1 つは、比較する前に colors 文字列の両側にコンマを配置することです。

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

これにより、カンマで正確に区切られたカラーコード 1 のみが一致することが保証されます。

別の効率的なアプローチでは、FIND_IN_SET() 関数を使用します。

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

FIND_IN_SET() は、colors フィールドのカンマ区切りリスト内に「1」が存在するかどうかを直接チェックし、正確な結果を提供します。 一般に、この方法は、明快さと効率の点で好まれます。

以上がカンマ区切りの値フィールドの完全一致を求めて MySQL に効率的にクエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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