ホームページ >データベース >mysql チュートリアル >カンマ区切りの列で特定の値を効率的にクエリする方法
冗長な LIKE ステートメントを使用せずに、カンマ区切りの列に特定の値をクエリする方法
データベース テーブルには、多くの場合、カンマ区切りで格納される列があります。値のリスト。特定の値を含む行を取得するには、LIKE ステートメントを使用できます。ただし、複数の LIKE ステートメントを使用すると、面倒で効果がなくなる可能性があります。
LIKE ステートメントを使用する場合の欠点
この例では、テーブルにカテゴリがカンマ区切り値として格納されています。
ID | CATEGORIES --------------- 1 | c1 2 | c2,c3 3 | c3,c2 4 | c3 5 | c4,c8,c5,c100
「c2」を含む行を検索するには、
SELECT id FROM table WHERE categories LIKE '%c2%';
を使用できます。ただし、これは文字列内の任意の場所に「c2」を含む行とも一致するため、誤検知が発生します。 。複数の LIKE ステートメントを使用して特定の組み合わせを確認するのは、面倒でエラーが発生しやすい可能性があります。
代替アプローチ: カンマ区切り検索
より効率的なアプローチは、カンマ区切り検索:
select * from YourTable where ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
このクエリは、カンマで囲まれた完全な値を検索し、完全に一致することを保証します。ただし、値にスペースやカンマが含まれていないことを前提としているため、制限があります。
最適な解決策: 個別のカテゴリ テーブル
これらの制限を回避してパフォーマンスを向上させるには、多対多のリレーションシップを持つメイン テーブルにリンクされた別のカテゴリ テーブルを作成することを強くお勧めします。これにより、煩雑な文字列操作や誤一致のリスクを伴うことなく、効率的なクエリとデータ操作が可能になります。
以上がカンマ区切りの列で特定の値を効率的にクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。