ホームページ >データベース >mysql チュートリアル >MySQL でカンマ区切りリスト内の特定の値を効率的に検索するにはどうすればよいですか?

MySQL でカンマ区切りリスト内の特定の値を効率的に検索するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-09 14:17:02882ブラウズ

How to Efficiently Search for Specific Values in Comma-Separated Lists in MySQL?

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

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