ホームページ  >  記事  >  データベース  >  MySQL のカンマ区切りフィールドで特定の値を検索するにはどうすればよいですか?

MySQL のカンマ区切りフィールドで特定の値を検索するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 00:01:03384ブラウズ

How to Search for Specific Values in a Comma-Separated Field in MySQL?

MySQL のカンマ区切りフィールド内の検索

MySQL では、データがカンマ区切り形式で保存される特定のシナリオが発生する場合があります。 、それを避けるように推奨されている実践にもかかわらず。このため、そのようなフィールド内で正確な検索を実行しようとすると課題が生じます。次の例を考えてみましょう。

テーブルには、カンマ区切りのリストとして保存された別のテーブルの値を持つフィールドが含まれています。

12,13,14,16

当面のタスクは、この中で特定の値を検索することです。

SELECT ... WHERE field LIKE '%1%'

のようなクエリを使用したフィールド。ただし、データの性質上、最も一般的な ID は狭い範囲内にあるため、このようなクエリはほぼすべてのエントリに一致します。

この問題に対処するには、より具体的な検索が必要です。 %1% を使用する代わりに、LIKE 条件内で %,1,% を使用することを検討してください。これは、前後にカンマが続く 1 を含む値と一致します。

残念ながら、この方法では、カンマ区切りリストの最初と最後の値には制限があります。これらの値はパターンと一致しないためです。

したがって、別のアプローチが必要です。 MySQL は、FIND_IN_SET と呼ばれる強力な関数を提供します。この関数を使用すると、カンマ区切りリスト内で検索できます。

SELECT ... WHERE FIND_IN_SET('1', field)

FIND_IN_SET を使用すると、カンマ区切りリスト内の指定された値の位置が返されます。値が存在しません。これにより、理想的でないデータ構造でも正確かつ効率的な検索が可能になります。

以上がMySQL のカンマ区切りフィールドで特定の値を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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