MySQL でのカンマ区切りリストの検索
ID のカンマ区切りリスト (例: " 12,13,14,16")、 LIKE 演算子。
この問題に直面したユーザーは、そのようなフィールド内で特定の値 (例: 「1」) を検索する方法を探していました。ただし、「SELECT ... WHERE field LIKE '%1%'」のようなクエリを使用すると、フィールド内に 10 ~ 20 の範囲の ID が蔓延しているため、ほぼすべてのエントリがフェッチされることになります。
これに対処するために、ユーザーは代わりに「%1,%」を検索することを検討しました。ただし、このアプローチは、フィールド内の最初と最後の ID には機能しません。
解決策: FIND_IN_SET 関数
解決策は、MySQL の FIND_IN_SET 関数を利用することにあります。 FIND_IN_SET は 2 つの引数を取ります。検索する文字列と、検索するカンマ区切りの文字列です。検索文字列内で検索されている文字列の位置を返します。見つからない場合は 0 を返します。
この場合、フィールド内で「1」を検索するには、クエリは次のようになります。
SELECT ... WHERE FIND_IN_SET('1', field)
このクエリは、フィールド内の ID のカンマ区切りリストに「1」が存在する行のみを返します。
以上がMySQL でカンマ区切りリスト内の特定の値を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。